Zufallszahlen + double Hashing
-
Hallo !
Habe einige wichtige Fragen an euch !
1. Ich habe ein Double Hashing Proggi geschrieben. Meine Frage: Dürfen gleiche Werte in der Hashtabelle stehen oder muss man solche abfangen ? (zum Beispiel wird im Feld 1 die Zahl 20 gespeichert und im Feld 3 auch der Wert 20). Ist das korrekt oder muss man doppelte Einträge ausschliessen ?
2. Ich soll nun die Werte per Zufall gleichverteilt einlesen. Der Datentyp der Hashtable ist long. wie kann ich da gleichverteilte Zahlen erzeugen, wenn die Zahlen im Bereich von 0 bis longgrösse sein sollen (negative Zahlen sind ja da nicht erwünscht da Arrayindex von 0 bis ...? .
Es wäre echt super, könnte mir jemand einen Beispielcode posten, hab schon überall geschaut, doch leider finde ich einfach nichts brauchbares.Dankeschön
-
1. K.p.
2. Du kannstrandomize(); zufall = random(arraylänge);
benutzen (bei arraylänge die null mitzählen).
Bessere Zufallszahlen lassen sich mit einfachen mitteln kaum errechnen
-
#define randomize {srand (time (NULL));}
odersrand( (unsigned) time(NULL) ) ;
oder
time(&sec);
srand( (unsigned) sec);um im standard zu bleiben
-
so wollt ihr gleichverteilte longs machen?
stellt euch vor, long habe 32 bits und rand() lefere nur bis 2^15-1.
-
Zufallszahlen funktionieren schon, doch meine erste Frage bleibt ja leider mehr oder weniger unbeantwortet *g.
Was bedeutet k.p ?
kann man gleiche Werte speichern oder nicht ?
Danke im Voraus, energy
-
kp heißt kein plan
Eine Hashtable stellt AFAIK abstrakt gesehen eine Menge dar, dh jedes Element kommt nur einmal drin vor. Beim Einfügen muß man also gucken, ob die Sequenz der Hashfunktionen zuerst ein freies Feld oder das einzufügende Element findet, und dann einfügen bzw. es sein lassen.
Man kann auch das schon existente Element durch das neue ersetzen.
-
Original erstellt von <random>:
srand( (unsigned) time(NULL) ) ;[/QB]mit time(NULL) erreicht man nichts. wenn, dann time(0), dies liefert nämlich die Anzahl der vergangenen Sekunden seit dem 01.01.1970 um 0.00 Uhr zurück.
-
NULL ist oft so vorzufinden:
#define NULL 0
Wo ist nun also der unterschied zwishen time(NULL) und time(0) ?
-
Wo ist nun also der unterschied zwishen time(NULL) und time(0) ?
Ersteres ist um drei Zeichen länger. Nicht mehr. Nicht weniger.
Ich hoffe ich bin da nicht zu kleinlich
-
Naja, sagen wir es einfach so: bei NULL kam bei mir bei time(0) ohne srand nunmal 0, bei time(0) jedoch kam dann eine etwas höhere Zahl. K.A. wieso, aber so wars bei mir.