Forum: PC-Programmierung Zufallszahlen


von Dirk S. (schani)


Lesenswert?

Hallo zusammen,
ich möchte gerne wirkliche Zufallszahlen an einem PC erzeugen. Mit der 
Random-Funktion der einzelnen Programmiersprachen ist sowas ja nicht 
möglich.

Ich dachte da an eine Pegelerkennug eines Radiosenders.

Hat jemand eine Idee für Schaltung, Software ?
Kann auch etwas käufliches sein, sollte nur nicht so teuer sein :-)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wozu?

von 3coop (Gast)


Lesenswert?

Matlab!!! villeicht

von Thomas (Gast)


Lesenswert?

Wie soll die Matlab "echte" Zufallszahlen algorithmisch erzeugen? Wäre 
ja ein echt tolles Wunder.

von Dirk S. (schani)


Lesenswert?

nein nicht matlab.

ich brauche die Zahlen für eine Statistik beim Roulettspiel.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Was heißt das? Willst du virtuelle Rouletteexperimente durchführen und 
dir davon die Statistiken anschauen? Dafür tut's jeder 
Pseudozufallsgenerator der eine halbwegs brauchbare Gleichverteilung 
liefert.

von Dirk S. (schani)


Lesenswert?

Es ist dabei sehr wichtig, dass es sich um "echte" Zufallszahlen 
handelt.
Deshalb habe ich daran gedacht an den Line-In des PC ein Radio 
anzuschliessen und dann mittels Software den Pegel auslesen / messen und 
ab einer bestimmten Schwelle die Zahl aus dem sich drehenden 
Roulettkessel die Zahl abzugreifen.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Dirk Schau wrote:
> Es ist dabei sehr wichtig, dass es sich um "echte" Zufallszahlen
> handelt.

Und warum?

von Peter Z. (Gast)


Lesenswert?

Hallo Dirk,

Permanenzen findest Du auch unter
http://www.spielbank-hamburg.de/spielsaal/permanenzen.php4

Sag mir bescheid wenn Du ein 100%iges System gefunden hast ;-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da fällt mir nur "Lavarand" ein:

http://www.lavarnd.org/

von Dirk S. (schani)


Lesenswert?

Ich hätte das mit dem Roulette wohl weglassen sollen.....

Also ich versuch es einmal anders.
Kennt jemand eine API-Funktion mit der sich der Pegel an einem Line-In 
auslesen bzw. ermitteln lässt ?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

wie wärs denn mit http://www.random.org/ (kein Witz!)

160MByte echte Zufallszahlen sollten für ein paar Statistiken reichen.

Matthias

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Für Simulationen sind Pseudozufallszahlen besser geeignet, weil das 
Ergebnis reproduzierbar ist und die Verteilung einfach kontrolliert 
werden kann. Ich verstehe nicht wieso du dich so auf die Line In-Lösung 
festgelegt hast.

von Dirk S. (schani)


Lesenswert?

und wieso wollt ihr mich davon abbringen ?
Ich habe doch nur nach euren Programmierkenntnissen gefragt....

Kennt also jemand eine API ?

von Thomas (Gast)


Lesenswert?

> und wieso wollt ihr mich davon abbringen ?

Weil es sinnlos ist?

Hälst du den Pegel eines Radiosignals für zufällig? Ist da nicht eine 
Korrelation drin?

von Rolf Magnus (Gast)


Lesenswert?

Statt eines Radios würde es auch einfach ein einzelner Transistor tun, 
dessen Rauschen man mißt. So machen das die internen 
Hardware-Zufallszahlengeneratoren in den PCs ja auch.

> und wieso wollt ihr mich davon abbringen ?

Weil's keinerlei wirklichen Nutzen bringt, sondern nur zusätzliche 
Umstände?

> Ich habe doch nur nach euren Programmierkenntnissen gefragt....

Und die hast du auch bekommen. Sie sagen, daß ein 
Pseudozufallszahlengenerator hier vollkommen ausreichend ist.

von Dirk S. (schani)


Lesenswert?

Ich wollte hier niemanden auf den Schlips treten !!

ich denke das der Pegel eines Radioprogramms niemals gleich sein wird, 
bzw. sich niemals wiederholt. Selbst wenn das Radioprogramm z.B. an zwei 
Tagen das völlig identische Programm ablaufen lassen würde.

Aus diesem Grund bin ich auf die Idee mit dem Radio gekommen.
Überschreitet der Pegel des Radios einen bestimmen (einstellbaren) Wert, 
wird eine Zahl von einer sich drehenden Scheibe mit Ziffern abgegriffen.

Da es ja einige Software gibt, welche die Pegel einer Musik als 
Balkengrafik anzeigen, dachte ich das es relativ einfach sein müsste 
diese Information für die Zufallszahlen verwenden zu können. Leider weiß 
ich software-Technisch nicht wie das gehen kann.

Die Transistorlösung hört sich auch gut an, aber auch da müsste ich ja 
das Rauschen messen - aber wie mach ich das ?



von Benedikt K. (benedikt)


Lesenswert?

Rauschen ist nichts anderes als Zufallszahlen, nur eben analog.
Man benutzt die Soundkarte als ADC und erhält die schönsten 
Zufalszahlen.

von Stefan (Gast)


Lesenswert?


von Dirk S. (schani)


Lesenswert?

hat vielleicht jemand noch ein paar Schnipsel Sourcecode um sowas mit 
dem Transistor zu realisieren ?

von Chris (Gast)


Lesenswert?

> hat vielleicht jemand noch ein paar Schnipsel Sourcecode um sowas
> mit dem Transistor zu realisieren ?

Je nach System vermutlich:
ifstream random("/dev/rand");
random.read(...)


Schau dir mal den "Mersenne Twister"-Algorithmus an:
http://en.wikipedia.org/wiki/Mersenne_twister

Der ist in keinster Weise vergleichbar mit einer gewöhnlichen 
rand()-Funktion, sondern liefert dermaßen gute Zufallszahlen, dass 
eigentlich nur noch kryptographische Anwendungen nicht in Frage kommen. 
Die Periode ist z.B. in der Größenordnung 10^6000, also mit heutigen 
Rechnern völlig unerreichbar.

Mit boost::random kannst du diesen Generator in C++ so einfach wie das 
normale rand() benutzen. boost::random würde ich mir eh mal anschauen, 
denn es kann soweit ich weiß sogar echte Zufallszahlen generieren 
(sofern Betriebssystem und Hardware mitspielen).

Das große Problem bei solchen Hardware-Zufallszahlen ist übrigens, eine 
tatsächliche Gleichverteilung hinzubekommen. Wenn du einfach selbst 
irgendein Rauschen oder Radio-Signal ausliest, bekommst du eher eine 
Normalverteilung mit unbekanntem Erwartungswert und Standardabweichung. 
Daraus gute Zufallszahlen zu bekommen könnte IMHO Stoff für eine 
wissenschaftliche Arbeit sein ("gut" im Sinne von "besser als Mersenne 
Twister"). Denn ich schätze, dass du ganz schnell einen Erwartungswert 
bekommt, der nicht RAND_MAX/2 ist, und keine stabile Gleichverteilung 
auftritt.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Chris wrote:
> Daraus gute Zufallszahlen zu bekommen könnte IMHO Stoff für eine
> wissenschaftliche Arbeit sein ("gut" im Sinne von "besser als Mersenne
> Twister").

Mersenne-Twister liefert Pseudozufallszahlen, keine Zufallszahlen, das 
darf man nicht vermischen.

von Chris (Gast)


Lesenswert?

> Mersenne-Twister liefert Pseudozufallszahlen, keine Zufallszahlen,
> das darf man nicht vermischen.

Was ich damit sagen wollte war, dass diese Pseudo-Zufallszahlen "nach 
außen" so gut [*] sind, dass es nicht trivial ist, per Hardware ähnlich 
gute Gleichverteilungseigenschaften zu erreichen.

[*] Abgesehen von der zwangsläufig bei Pseudo-Zufallszahlen vorhandenen 
Eigenschaft der exakten Reproduzierbarkeit.

von Wolfram (Gast)


Lesenswert?

>ich denke das der Pegel eines Radioprogramms niemals gleich sein wird,
>bzw. sich niemals wiederholt
Also ich denke, je besser das SNR ist, um so weniger wird das zutreffen. 
Wenn man Rauschen benutzen will um Zufallszahlen zu erzeugen, dann 
sollte man nicht unbedingt Systeme dazu benutzen die versuchen Rauschen 
zu vermeiden.
Bei einem Radiosender der die aktuellen Hitparaden runterdudelt, würde 
ich annehmen, das die Autokorrelationsfunktion hervorragend so alle 2 
Stunden einrastet. Sehr wahrscheinlich rastet sie aber auch auf alle 5 
bis 6 Töne eines sogenannten Hits ein. Bei klassischer Musik dürfte die 
Einrastrate etwas absinken besonders im Pegel, da hier mit mehr Dynamik 
gearbeitet wurde.
Anfang des letzten Jahrhunderts gab es einige andere Ansätze 
Zwölftonmusik etc. da könnte dein Ansatz sogar funktionieren. ;-)



von R. F. (Gast)


Lesenswert?


von Markus (Gast)


Lesenswert?

Also wenn du partout nicht auf echte Zufallszahlen Verzichten möchtest 
empfehle ich einen Blick in die C'T 2 09 dort wird Beschrieben wie man 
mit hilfe einer WebCam echte Zufahlzahlen erzeugen kann. Mit einer DVB-S 
Receiverkarte gehts wohl auch recht pasabel. Eine weitere Möglichkeit 
wäre ein VIA C3 (Nehemia) Prozeßor oder jünger die haben einen echten 
Zufallsgenerator namens Padlock an Board (VIA EPIA M10000).

Schau mal auf http:// www.heise.de unter Softlink 0902172
da solltest du eine Softwareimplementation für den WebCam 
Zufallsgenerator finden.

von hans (Gast)


Lesenswert?

Wenn du bei der Radioimplementierung bleiben willst
helfen dir vielleicht die "Software Ozis"

da hast du dann Schaltung und Source

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.