die normale random() funktion liefert ja meist zufallszahlen mit einer häufung im mittleren bereich. Also wenn ich eine Zufallszahl zwischen 1 und 10 suche, wird via random() die 5 häufiger vorkommen als die 1 oder 10.. zumindest ist das bei mir meist so.
Jetzt gibt es ja noch diverse andere Algorithmen um ne Zufallszahl zu generieren, kennt ihr da einen guten mit sehr guter Verteilung?
Ich habe mal folgendes Programm zum Testen geschrieben:
Code:
program test;
const max = 100000; var a : longint; zahlen : array [0..9] of longint;
begin randomize; for a:=0 to 9 do zahlen[a]:=0; for a:=1 to max do inc(zahlen[random(10)]); for a:=0 to 9 do writeln(a,' kam bei ',max,' Versuchen ',zahlen[a],' mal vor. Das sind ',zahlen[a]/(max/100):2:2,'%.'); end.
Bei max = 100000 kommt folgendes raus:
Code:
0 kam bei 100000 Versuchen 10137 mal vor. Das sind 10.14%. 1 kam bei 100000 Versuchen 10077 mal vor. Das sind 10.08%. 2 kam bei 100000 Versuchen 10038 mal vor. Das sind 10.04%. 3 kam bei 100000 Versuchen 9927 mal vor. Das sind 9.93%. 4 kam bei 100000 Versuchen 9964 mal vor. Das sind 9.96%. 5 kam bei 100000 Versuchen 9988 mal vor. Das sind 9.99%. 6 kam bei 100000 Versuchen 10014 mal vor. Das sind 10.01%. 7 kam bei 100000 Versuchen 9964 mal vor. Das sind 9.96%. 8 kam bei 100000 Versuchen 9942 mal vor. Das sind 9.94%. 9 kam bei 100000 Versuchen 9949 mal vor. Das sind 9.95%.
Und bei max=1000000:
Code:
0 kam bei 1000000 Versuchen 100558 mal vor. Das sind 10.06%. 1 kam bei 1000000 Versuchen 100252 mal vor. Das sind 10.03%. 2 kam bei 1000000 Versuchen 100011 mal vor. Das sind 10.00%. 3 kam bei 1000000 Versuchen 100079 mal vor. Das sind 10.01%. 4 kam bei 1000000 Versuchen 100131 mal vor. Das sind 10.01%. 5 kam bei 1000000 Versuchen 99888 mal vor. Das sind 9.99%. 6 kam bei 1000000 Versuchen 99920 mal vor. Das sind 9.99%. 7 kam bei 1000000 Versuchen 100136 mal vor. Das sind 10.01%. 8 kam bei 1000000 Versuchen 99209 mal vor. Das sind 9.92%. 9 kam bei 1000000 Versuchen 99816 mal vor. Das sind 9.98%.
Das ist also schon normal verteilt. Das ist zwar die Random-Implementierung von Free Pascal, aber die der anderen Programmiersprachen wird ähnlich, wenn nicht sogar genauso sein.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Achman.... ja hast ja recht. Aber ich denke es ist rüber gekommen, dass ich gleichverteilt meinte. Ich leide zunehmend an "Phobismus", das heißt, man muss meine Beiträge erstmal ausgiebig interpretieren und erst dann kritisieren, wenn sie immer noch keinen Sinn ergeben.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.