Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 04, 2025 19:49

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Zufallszahlen
BeitragVerfasst: Di Mai 04, 2010 10:32 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

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?

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Zufallszahlen
BeitragVerfasst: Di Mai 04, 2010 11:53 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Eigentlich sollte Random() normalverteilt sein, nicht gaußverteilt.

Hast du da mal ne auswertung mit 10000 random aufrufen gemacht?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Zufallszahlen
BeitragVerfasst: Di Mai 04, 2010 13:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Zufallszahlen
BeitragVerfasst: Di Mai 04, 2010 21:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Eigentlich sollte Random() normalverteilt sein, nicht gaußverteilt.

*hust...eine Normalverteilung und eine Gauß-Verteilung sind das selbe.
=> Zufallszahlen sollten gleichverteilt sein.

Lass deine Schleife mal 2^32 mal laufen, dann dürfte es exakt gleichverteilt sein, da nämlich modulo 2^32 gerechnet wird.

Wie die Zufallsgeneratoren in verschiedenen Sprachen/Compilern implementiert sind kann man hier sehen:
http://en.wikipedia.org/wiki/Linear_con ... common_use

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Zufallszahlen
BeitragVerfasst: Mi Mai 05, 2010 08:55 
Offline
Guitar Hero
Benutzeravatar

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. 8) ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]