Sooo .. mal wieder eine diffizile Frage .. Konnte im Forum mit der Stichwortsuche nach Zufall nix gewünschtes finden, also frage ich selbst mal. Angenommen ich hätte gerne einen Zufallsgenerator, der auch wirklich zufällig ist, wie würde ich sowas machen. Grundbedingungen: * Kostensparend (am besten kein externes Bauteil) * CPU Time - sparend (bin eh schon beinahe am Limit :) ) Was mir bis jetzt in den Sinn kam: * ADC Rauschen verwenden Hat sowas schonmal jemand gemacht, oder gibts evtl. andere Vorschläge ?
Echte Zufallswerte wirst du so nicht bekommen, höchstens sg. Pseudo Zufallszahlen. Guckst du hier: http://www.agner.org/random/ Um echte Zufallszahlen zu bekommen, benötigst du auch einen richtigen Zufallsprozess. Z. B. das Rauschen von Halbleiterbauelementen. Dies ist aber sehr klein, muß also verstärkt werden und somit sind externe Komponenten notwendig. Thorsten
habs fast befürchtet :) gewünscht sind eben sehr wohl RICHTIGE Zufallszahlen ... eine Killeralternative wäre ja auch eine RTC anzuhängen und aus dem Wert über mathematische Verfahren eine Pseudo Zufallszahl zu generieren, die wenigstens nicht bei jedem Start gleich ist .. Kennst du vielleicht eine Schaltung, wie ich das von dir angegebene Halbleiterrauschen verstärken könnte ? Mein Elektronikwissen ist nicht allzu fundiert ... Verstärkung eines Transistors kenn ich zwar, aber ehrlich gesagt wüsste ich nicht ganz wo anfangen ... Was mir im Kopf herumgeistert: * Das Rauschen am ADC Eingang nutzen, von dem Wert einen Sinus bilden, und vom Sinus die 10te Stelle nehmen .. oder irgendsowas :) Nur das mit dem Rauschen und dem Verstärken macht mir noch etwas Sorgen .. Bzgl. Performance: Eigentlich ist es egal wie lange die Berechnung dauert, da sie nur etwa 1 mal / Minute benötigt wird ...
Hi PRNG plus irgendeinen Wert der nicht immer gleich ist (z.B. aus einem Timerwert bei einem Tastendruck bzw. einem sonstigen asynchronen Ereignisses) Reicht als Zufallswert fast immer völlig aus. Matthias
Hallo! Wenn du von jeder ADC-Messung nur das LSB verwendest, sollte das Ergebnis schon recht zufällig sein, auch ohne riesigem Aufwand an externer Schaltung. servus, Martin
Hi das wage ich zu bezweifeln. Unter Umständen mißt du die 50Hz vom benachbarten Trafo. Und das dann mit 50Hz abgetastet gibt ne schön zufällige Reihe von Nullen :-) PRNG mit einem halbwegs zufälligen Initialwert ist schon der richtige Weg. Matthias
das blöde ist, dass ich nichts habe, was irgendeine User - Interaktion erfordert ... das Programm selbst läuft immer genau gleich ab, und damit dem nicht so ist -> Zufallsgenerator ...
Ich denke mal auch, das die Kombination aus Pseudo-Zufallszahlengenerator mit einem Startwert aus dem "zappeln" des niederwertigsten Bits vom ADC aureichend zufällig ist. Kommt natürlich immer darauf ann, was man damit machen will, und in welchem Umfeld es eingestzt werde soll. Notfalls kann man sich zusätzlich den letzen Startwert irgendwo merken, um zu vermeiden, daß zweimal der selbe Wert beim Starten gesetzt wird. Gruß Ingo
Hallo! Nochwas: Den ADC natürlich möglichst schnell machen. In den Datenblättern steht ja schon, daß man die Genauigkeit mit einer langsamen Wandlung verbessern kann, also auch umgekehrt.. Aber am besten schaust du die Ergebnisse der Wandelung trotzdem einfach mal an, und kannst dann anhand der Werteverteilung selbst abschätzen, ob eine Zufällige Verteilung wahrscheinlich oder unwahrscheinlich ist.. servus, Martin
also das mit dem ADC werde ich mal testen: * möglichst schnell * LSB auswerten (evtl. die letzten 2) ... mal schauen :) danke für den Input :)
Die C - rnd Funktion läuft recht gut. Am Besten 10 Werte sammeln und dann dividieren. Ein Tastendruck wäre natürlich die beste Lösung. SG Josef
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.