mikrocontroller.net

Forum: PC-Programmierung Zufallszahlen


Autor: Dirk Schau (schani)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu?

Autor: 3coop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matlab!!! villeicht

Autor: Thomas (Gast)
Datum:

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

Autor: Dirk Schau (schani)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein nicht matlab.

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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk Schau (schani)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Und warum?

Autor: Peter Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fällt mir nur "Lavarand" ein:

http://www.lavarnd.org/

Autor: Dirk Schau (schani)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

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

Matthias

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk Schau (schani)
Datum:

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

Kennt also jemand eine API ?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk Schau (schani)
Datum:

Bewertung
0 lesenswert
nicht 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 ?



Autor: Benedikt K. (benedikt) (Moderator)
Datum:

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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Dirk Schau (schani)
Datum:

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

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. ;-)



Autor: R. F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du bei der Radioimplementierung bleiben willst
helfen dir vielleicht die "Software Ozis"

da hast du dann Schaltung und Source

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.