PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Quelltext von Zufallsfunktion?


{655321}-Hades
2003-11-05, 14:37:30
Ich hätte gerne mal den Quelltext einer Zufallsfunktion. Hab schon bei Programmers Heaven geguckt, aber da ist das nicht zu finden.

Also tatsächlich den Quelltext zu sowas, egal in welcher Sprache, nicht die Befehle =)

Kann mir jemand weiterhelfen?

Crushinator
2003-11-05, 14:49:30
:kratz2: Meinst Du etwa sowas wie aus dem c't Projekt (http://www.heise.de/ct/ftp/03/21/222/)?

void CListList_CPPV7Dlg::BuildListList(CSingleEntry* List, int Level)
{ int LocalCount, NameLength;
CString NewName;

// maximal 25 Einträge pro Liste - nur das Stammverzeichnis
// kann mehr haben
LocalCount = rand() % 25 + 1;

for (int x = 1; x <= LocalCount; x++)
{
EntryCount--;
// zufälliger Name mit 1-8 Zeichen
NameLength = rand() % 8 + 1;
NewName = "";
for (int y = 1; y <= NameLength; y++)
NewName += char((int)'a' + (rand() % 26));

// Einzelner Eintrag oder neue Liste? Die Wahrscheinlichkeit
// für neue Listen (und weitere Rekursion) sinkt mit zunehmender
// Verschachelungstiefe
if (rand() % (10*Level) < 1)
BuildListList(List->AddNode(NewName), Level+1); // new list
else List->AddEntry(NewName);

if (EntryCount == 0)
break;
}
}

...oder was spezielleres?

Demirug
2003-11-05, 14:51:03
Einmal Zufallsfunktion ala Microsoft



static long holdrand = 1L;

int rand (void)
{
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
}

JTHawK
2003-11-05, 15:07:35
un php ganz einfach :D


srand(time());
$random = (rand()%9);
echo $random;


okok keine funktion .. aber random :D

{655321}-Hades
2003-11-05, 16:10:01
Original geschrieben von Demirug
Einmal Zufallsfunktion ala Microsoft



static long holdrand = 1L;

int rand (void)
{
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
}


Jo, ich glaube sowas habe ich gesucht...

Kannst du mir das bitte mal zum Verständnis auskommentieren? =)

Demirug
2003-11-05, 16:46:17
Was ist daran nicht verständlich?

Der Code macht nichts anderes als aus der jeweils letzten Zahl eine neue zu berechenen. Die beiden Zahlen sind dabei so gewählt das eine möglichst gleichmässige Verteilung erreicht wird.

Das & 0x7FFF ist dazu da das keine negativen Ergebnisse entstehen.

{655321}-Hades
2003-11-05, 20:30:08
erstens erkenne ich die Sprache nicht, und die Befehle sind mir auch nicht geläufig Demirug ;)

Deswegen ist das nicht verständlich ;)

Kannstes vielleicht etwas genauer erklären?

aths
2003-11-05, 22:12:36
Der mathematische Ausdruck sollte doch selbsterklärend sein? >> ist eine Bitschiebe-Operation, & ist eine logische AND-Verknüpfung, was im Kontext eigentlich klar sein dürfte :)

Gast
2003-11-05, 22:34:02
Original geschrieben von {655321}-Hades
erstens erkenne ich die Sprache nicht, und die Befehle sind mir auch nicht geläufig Demirug ;)

Deswegen ist das nicht verständlich ;)

Kannstes vielleicht etwas genauer erklären?

{655321}-Hades,

Die heutigen Sprachen oder Syntaxe kenn´ich auch nicht. Man kann aber eine relativ zufällige Zahl z.B. über das Datum, die Uhrzeit, die Rechnerlaufzeit und während der Rechneraufzeit bearbeitete Daten ableiten.

Karlsson
2003-11-05, 22:37:05
:uhippie:

Brillus
2003-11-23, 16:20:26
Also einfachste Art eines Zufallsgenerator bei System die unterschiedliche Sachen gemeinsam machen ist man nehme sich einen Timmer mit sehr geringen Zeiteinheiten. Lese desen Werte aus und bilde Modulo zu bestimmter zahl. Wenn das Verhältnis Timertick, Rechengeschwindikeit, umweltenflüsse (unterschie in der Auslese zeit vom Ram andere Programmme etc) und die Zahl mit der man Modulo macht hat man Zufallszahlen.

Trap
2003-11-23, 19:52:06
Zufallsgeneratoren sind ein gut wissenschaftlich untersuchtes Gebiet der Informatik und gibt für fast jede Anwendung fertige sehr gut funktionierende Pseudo-Zufallsgeneratoren.
Etwas selbst schreiben würde ich daher mit Sicherheit nicht, da kann man zuviel falsch machen, höchstens eine Variante aussuchen und kopieren.

Englisches Suchwort: pseudo random number generator