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 :-)
Wie soll die Matlab "echte" Zufallszahlen algorithmisch erzeugen? Wäre ja ein echt tolles Wunder.
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.
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.
Dirk Schau wrote: > Es ist dabei sehr wichtig, dass es sich um "echte" Zufallszahlen > handelt. Und warum?
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 ;-)
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 ?
Hi wie wärs denn mit http://www.random.org/ (kein Witz!) 160MByte echte Zufallszahlen sollten für ein paar Statistiken reichen. Matthias
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.
und wieso wollt ihr mich davon abbringen ? Ich habe doch nur nach euren Programmierkenntnissen gefragt.... Kennt also jemand eine API ?
> 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?
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.
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 ?
Rauschen ist nichts anderes als Zufallszahlen, nur eben analog. Man benutzt die Soundkarte als ADC und erhält die schönsten Zufalszahlen.
hat vielleicht jemand noch ein paar Schnipsel Sourcecode um sowas mit dem Transistor zu realisieren ?
> 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.
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.
> 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.
>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. ;-)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.