www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zufallsgenerator mit einem AT90S8515


Autor: Somnatic (Gast)
Datum:

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

Autor: Thorsten (Gast)
Datum:

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

Autor: Somnatic (Gast)
Datum:

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

Autor: Matthias (Gast)
Datum:

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

Autor: Martin Götzenberger (Gast)
Datum:

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

Autor: Matthias (Gast)
Datum:

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

Autor: Somnatic (Gast)
Datum:

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

Autor: Ingo Henze (Gast)
Datum:

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

Autor: Martin Götzenberger (Gast)
Datum:

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

Autor: Somnatic (Gast)
Datum:

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

Autor: Josef (Gast)
Datum:

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

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.