Zufallszahlen

#508793
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 :-)
#509014
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.
Gast #509649
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.
#509876
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 ?


Gast #511055
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.
Gast #511376
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.
Gast #512108
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. ;-)


Gast #1139301
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren