Hallo, auch wenn mir die random Funktion genügt, so würde ich doch für den STm32F1xx eine zufällige Startzahl benöitigen, damit nicht immer die gleichen Zahlen entstehen. Der F1 hat keinen RNG wie der F4. Nur ist es bei uC mit Zufall so eine Sache. Einen Rauschgenerator wollte ich auch nicht aufbauen. Und auch die Unterschiede zwischen Watchdog RC Takt und einem Timer am Quarz erzeugen meist die gleichen Zahlen. Interessant aber wie sie es gemacht haben steht da nicht: https://winfuture.de/news,93326.html Gibt es da einfache Lösungen mit wenigen Bauteilen? Also wie gesagt nur für den Seed? Gruss, Christian
Christian J. schrieb: > Gibt es da einfache Lösungen mit wenigen Bauteilen? Nicht wirklich. > Also wie gesagt nur für den Seed? "Nur"? Wer so fragt, hat nicht begriffen, dass ein wirklich zufälliger Seed der Kern der Sache ist. Damit steht und fällt die ganze Lösung. Also: entweder muss es zufällig sein, dann muss auch ein wirklich zufälliger Seed her oder es muss eben nicht zufällig sein, dann reicht eine Konstante als Seed. Alles andere ist nutzlose Frickelei. Reine Vertuschung der objektiven Untauglichkeit der Lösung.
Christian J. schrieb: > Hallo, > > auch wenn mir die random Funktion genügt, so würde ich doch für den > STm32F1xx eine zufällige Startzahl benöitigen, damit nicht immer die > gleichen Zahlen entstehen. Ich hab das bei meinem LED-Spiel einfach gelöst. rand() wir nach dem Programmstart periodisch mit 100 Hz aufgerufen. Damit kommt der Pseudozufallsgenerator in Schwung. Wenn dann im normalen Programmablauf ein Aufruf erfolgt, ist die aktuelle Position abhängig vom Zeitpunkt des Aufrufs. Der ist aber nie auf 10ms genau reproduzierbar. Also hat man einen praktisch zufälligen Startwert.
Falk B. schrieb: > Christian J. schrieb: >> Hallo, >> >> auch wenn mir die random Funktion genügt, so würde ich doch für den >> STm32F1xx eine zufällige Startzahl benöitigen, damit nicht immer die >> gleichen Zahlen entstehen. > > Ich hab das bei meinem LED-Spiel einfach gelöst. rand() wir nach dem > Programmstart periodisch mit 100 Hz aufgerufen. Damit kommt der > Pseudozufallsgenerator in Schwung. Wenn dann im normalen Programmablauf > ein Aufruf erfolgt, ist die aktuelle Position abhängig vom Zeitpunkt des > Aufrufs. Der ist aber nie auf 10ms genau reproduzierbar. Also hat man > einen praktisch zufälligen Startwert. Das ist denke ich die pragmatische Lösung. Für ein Gadget ist das super, evtl. würde ich die Frequenz etwas erhöhen (kann mir vorstellen dass man mit Übung zumindest eine Häufung in einem bestimmten 10ms-Slice erzeugen kann beim Knopf drücken). Für kryptographische Anwendungen ist ein ordentlicher Hardware-RNG sicherlich die Wahl.
Falk B. schrieb: > Der ist aber nie auf 10ms genau reproduzierbar. Also hat man > einen praktisch zufälligen Startwert. Die Variabilität dieses Zeitpunkts ist der einzige Zufall darin. Der Rest verkompliziert nur den Determinismus des PRNG. Wenn sich das also zwar nicht auf 10ms reproduzieren lässt, aber beispielsweise auf 100ms, dann sind allenfalls 3 Bits Zufall drin.
Quark hoch zehn! Nimm den Sekundenwert der Echtzeituhr und leite dann das ab was du haben möchtest.
Christian J. schrieb: > so würde ich doch für den STm32F1xx eine zufällige Startzahl benöitigen, > damit nicht immer die gleichen Zahlen entstehen Kommt auf die Anwendung an: Zufall nur nach Benutzeraktion, und sei es wie lange der Einschalttaster betätigt wird ? Mache den seed von dieser Benutzeraktion abhängig. Das System kennt die Zeit ? Mache den seed von der Zeit abhängig. Analogeingang ? Sample sein Rauschen ggf. mit langer Antenne. Oder einfacb de alten RNG im EEPROM speichern und nach neuem Einschalten dort weitermachen.
A. K. schrieb: > Falk B. schrieb: >> Der ist aber nie auf 10ms genau reproduzierbar. Also hat man >> einen praktisch zufälligen Startwert. > > Die Variabilität dieses Zeitpunkts ist der einzige Zufall darin. Der > Rest verkompliziert nur den Determinismus des PRNG. Wenn sich das also > zwar nicht auf 10ms reproduzieren lässt, aber beispielsweise auf 100ms, > dann sind allenfalls 3 Bits Zufall drin. Stimmt, aber auch das ist bei meiner Anwendung nicht gegeben. Zumal auch das neu ziehen von Zufallszahlen immer wieder vom Zeitpunkt abhängt und damit auch geschätzt auf bestenfalls 1s genau reproduzierbar ist. Ist sicherlich nicht der Königsweg, aber für viele einfache Anwendung ausreichend.
Es könnte sein dass ein Tastendruck bzw. die Dauer in kleinen Zeiteinheiten wirklich zufällige Werte ergibt.
Hallo, es geht nur um eine Deko, wo auf einer MAX7219 1024 LED Matrix das "Game of Life" läuft. Da ich, damit es am Leben bleibt immer zufällige neue "unsichtbare Zellen" im Feld erzeuge sollten sie wirklich zufällig sein, da sonst immer die gleichen Muster entstehen. Habe das mit dem F429 mal schön gelöst, nur hat der eben den RNG drin. Das System arbeitet ohne jede Eingaben von außen. Ok, man kann auch einen LDR nehmen und den auslesen, da das Licht nie immer gleich ist. Als Startwert reicht das. Ich brauche neue Zahlen, wenn die Anzahl Zellen unter bestimmte Werte fällt. UIhrzeit hätte ich, einen Dallas Chip dran ist kein Thema, die benutze ich oft. I2C Routinen sind fertig für die Statemachine des F1 und laufen auch.
Ok, ich glaube ich mache es so, dass ich wirklich nur einen LDR nehme und den alle n Zufallszahlen neu auslese, zb 1 x pro Stunde und damit den neuen Seed erzeuge.Das Modell steht am Fenster und von daher schwankt die Helligkeit unentwegt um mindestens ein paar Digits.
Christian J. schrieb: > Gibt es da einfache Lösungen mit wenigen Bauteilen? Also wie gesagt nur > für den Seed? Hat der STM32 nicht eine interne Temperaturdiode am ADC? Damit könnte man eine Zufallsgenerator aufbauen, indem man das unterste Bit (die untersten Bits) des ADCs benutzt, wenn er die interne Chip Temperatur misst. Da ist i.d.R. nur Rauschen drin. Für Crypto Zwecke würde man dieses Rauschen noch durch "Hash" Funktionen wie SHA1 oder MD5 jagen, was auf einem STM32 aber zu teuer sein dürfte.
Jim M. schrieb: > Für Crypto Zwecke würde man dieses Rauschen noch durch "Hash" Funktionen > wie SHA1 oder MD5 jagen, was auf einem STM32 aber zu teuer sein dürfte. Für Krypto-Zwecke nutzt man weder den leicht beeinflussbaren ADC als Zufallsquelle, noch verwendet man veraltete Hashfunktionen wie SHA1 oder gar MD5.
Beitrag #5920439 wurde von einem Moderator gelöscht.
Beitrag #5920459 wurde vom Autor gelöscht.
Lustig, diese Frage hatten wir gestern im Meeting. Hitzige Diskussionen, Tausend Vorschläge :-) Ergebnis: Wir lassen einen Zähler laufen und messen ein paar male den Nulldurchgang der 50Hz, die wir per Antenne empfangen. Start des System und die Phase der 50Hz sind extrem stark abweichend. Der Zähler zählt im uc bis 65535 und hat bei 1000 Versuchen jede Zahl nur einmal gebracht.
Elbi schrieb: > Der Zähler zählt im > uc bis 65535 und hat bei 1000 Versuchen jede Zahl nur einmal gebracht. ... was massiv unwahrscheinlicher ist, als dass Zahlen doppelt vorkommen. So unwahrscheinlich, dass es eigentlich fast nicht sein kann.
Christian J. schrieb: > Also wie gesagt nur für den Seed? Wirf doch einfach den Zustand des PRNG alle paar Sekunden in ein Backup-Register und lade ihn beim Powerup von da aus. Braucht natürlich Speisung an V_BAT, wozu Du entweder einen Goldcap nehmen kannst (mit Vorwiderstand und Rücksperrdiode), oder Du verbaust eine Knopfzelle. Alternativ kannste auch einen ADC-Eingang mit zwei Spannungsteilerwiderständen in ungefähr die Mitte seines Bereiches legen und zum Startup N Messungen machen, von denen Du jeweils nur das LSB mitnimmst. Wobei N halt die Bitbreite Deines Seeds ist.
Einigermaßen zufällig wirkende Zahlen lassen sich recht einfach erzeugen, indem man die Spannung von rauschenden Bauteilen misst oder die Dauer eines Tastendruckes auswertet. Es hängt von deinen Anforderungen ab: 1) Ist es egal, wenn der Zufallszahlen-Generator von außen beeinflussbar ist? 2) Ist es egal, wenn der Generator nach hinreichend vielen Aufrufen manche Zahlen besonders häufig oder selten ausgibt? Bei einem Würfel wäre 1) noch Ok, aber 2) ganz sicher nicht.
Sven B. schrieb: > noch verwendet man veraltete Hashfunktionen wie SHA1 Gilt der Linux Zufallsgenerator als unsicher? Nein.
Jemand schrieb: > Sven B. schrieb: >> noch verwendet man veraltete Hashfunktionen wie SHA1 > > Gilt der Linux Zufallsgenerator als unsicher? Nein. Was ist "der Linux Zufallsgenerator"? /dev/urandom? Wo benutzt das sha1 (oder irgendeine Hashfunktion)?
:
Bearbeitet durch User
Nutze doch einfach die "Hardware" die vor dem Teil steht/sitzt! Wird im Zusammenhang mit irgendwelchen Eingaben eine Zufallszahl benötigt, so sollte der erste Tastendruck als Referenz herangezogen werden. Ich kann mir nicht vorstellen, das jemand wiederholt nach 6,8888888... Sekunden die erste Taste nach dem Einschalten, betätigen kann. Ab diesem Zeitpunkt kommt es natürlich auf den Algorithmus an der verwendet werden soll. Was noch zufällig wäre ist ein von der Netzspannung, hochohmig aufgeladener Kondensator hinter einem gleich riecht er. Ein einfacher Komparator und eventuell ein Optokoppler schaffen hier Sicherheit. Die Größe des Kondensators bzw. des Widerstandes sorgen dafür, dass der Schwellwert erst nach der Initialisierung erreicht wird. Der Zufall kommt dadurch ins Spiel, dass der Ladezustand des Kondensators davon abhängt, zu welchem Spannungswert die Netzspannung eingeschaltet wird. Die Si-Nuss rollt ja ständig Rum und es sollte schwierig werden einen definierten, aktuellen Wert zwischen nichts und 180° zu treffen.
:
Bearbeitet durch User
Sven B. schrieb: > Jemand schrieb: > Sven B. schrieb: > noch verwendet man veraltete Hashfunktionen wie SHA1 > > Gilt der Linux Zufallsgenerator als unsicher? Nein. > > Was ist "der Linux Zufallsgenerator"? /dev/urandom? Wo benutzt das sha1 > (oder irgendeine Hashfunktion)? Wenn man Daten aus den Entropy-Pools input_pool oder blocking_pool (-> /dev/random) entnimmt, weden diese mit SHA-1 gehasht und gefalten. Für /dev/urandom wird ChaCha20 aus dem input_pool geseedet.
Vielleicht kann man den Inhalt eines RAM-Speicherbereiches zusammenzählen - beim Einschalten könnten da zufällige Werte stehen.
Beitrag #5920634 wurde von einem Moderator gelöscht.
Meine, mich dunkel zu erinnern, dass bei einem Elektor-Projekt zur Zufallserzeugung an einem oder mehreren Pins eines Mikrocontrollers kleine Kondensatoren über Widerstände angeschlossen waren. Die wurden jeweils über den gleichen Pin geladen/entladen und dann abgefragt, um ein Zufallselement zu erhalten. Christian J. schrieb: > Zufall per Hardware erzeugen Übrigens fände ich den umgekehrten Fall auch sehr cool! ;)
Wilma Streit schrieb im Beitrag #5920634: > Jemand schrieb: >> gefalten. > > Wo spricht man so? https://de.wikipedia.org/wiki/Mansfeldisch https://www.youtube.com/watch?v=zbM083Emf3w (Achtung, gewöhnungsbedürftig)
Statt nur einen LDR auszuwerten, kann man auch zwei auswerten und diese nach zwei unterschiedlichen Richtungen ausrichten. Dann potenziert sich sogar der Zufall! Je nach Sonnenstand kann der eine oder andere LDR mehr im Schatten sein.
Christian J. schrieb: > es geht nur um eine Deko Diese Information hät in das OP gehört, findest du nicht? Für reinen Spielkram reicht es natürlich, wenn's nur hinreichend zufällig aussieht. Aber sowas sollte jeder halbwegs mit Eigenintelligenz begabte ja locker hinbekommen können, ohne ein Forum dazu befragen zu müssen...
Elbi schrieb: > Der Zähler zählt im > uc bis 65535 und hat bei 1000 Versuchen jede Zahl nur einmal gebracht. Es gibt etablierte mathematische Methoden, eine Verteilung von Zahlen zu untersuchen. Diese gehört eher nicht dazu (*). Als Einstieg: https://de.wikipedia.org/wiki/Zufallszahlengenerator#Güte_eines_Zufallszahlengenerators https://en.wikipedia.org/wiki/Statistical_randomness *: for i := 1 to 1000... hat die gleiche Eigenschaft. ;-)
Bla schrieb: > Vielleicht kann man den Inhalt eines RAM-Speicherbereiches > zusammenzählen - beim Einschalten könnten da zufällige Werte stehen. Ob die Summe gleichverteilter Zahlen wohl gleichverteilt ist? Ausserdem ist sehr offen, wie verteilt die Startup-Werte der RAM Zellen unter allen Randbedingungen tatsächlich sind. Ein weiteres Problem dabei liegt in der Erkennung vom Powerup. RAM behält seinen Inhalt meist noch bei einer Spannung, die weit unter der Schwelle der entsprechenden Detektoren in µCs liegt.
Hallo "Für reinen Spielkram reicht es natürlich, wenn's nur hinreichend zufällig aussieht. Aber sowas sollte jeder halbwegs mit Eigenintelligenz begabte ja locker hinbekommen können, ohne ein Forum dazu befragen zu müssen..." Da gibt es so Typen im Forum die lassen einen (oft überheblichen) Kommentar zu gefühlt jeden zweiten Thema seit den letzten zehn Jahren ab, haben aber noch immer nicht verstanden wie ein Forum funktioniert und wofür es alles gut ist. Und nein es geht nicht nur darum die Frage eines TO allein für den TO zu beantworten (PN, oder "Danke ich habe eine Lösung gefunden" Mitteilungen durch den TO ohne weiter Ausführungen sind zu recht verpönt) sondern auch darum das andere mitlesen die ähnliche Fragen haben, das die Threads archiviert und immer wieder aufrufbar und somit die Information für Jedermann nutzbar sind (Wie gut dieses Archiv bzw. Datenbank zu nutzen ist und wie gut die Treffer sind ist eine andere Baustelle). Es ist ja kein Zufall das wenn man in deutscher Sprache mal etwas spezieller im Bereich µC und Elektronik googlet Threads aus diesem Forum hier recht oft mit zu den ersten Treffern gehören. Und einigen regelmäßigen Forennutzern ist auch nicht klar das sie unter ihren Nutzernamen sehr schnell Foren weit (teilweise auch in der entsprechenden gesamten Online Szene) bekannt, berüchtigt werden. Aber scheinbar ist es diesen Zeitgenossen egal (oder sind sogar noch stolz darauf...?) als arrogante, unsoziale Zeitgenossen zu gelten egal wie viel sie Fachspezifisch drauf haben. Oder sie leben in ihrer Scheinwelt und verwechseln Arroganz, Unfähigkeit zur Empathie, Mobben und Beleidigen mit Selbstsicherheit. Jemand
Zizat aus dem Artikel: "In dem Verfahren werden im Grunde zwei verschiedene Quellen für Pseudo-Zufallszahlen herangezogen. Diese werden dann so miteinander kombiniert, dass eine Sequenz von Nummern entsteht, die als echte Zufallszahlen angesehen werden können. Sprich: Es ist bewiesenermaßen nicht möglich, vorherzusagen, welcher Wert an der nächsten Stelle kommt. Wie Zuckerman ausführte, habe er sich seit 20 Jahren immer wieder mit dem Problem befasst. "Ich bin begeistert, es nun gelöst zu haben", sagte er. " Das Problem der "echten" Zufallszahlen ist ja nun hinreichend bekannt. Und dass der Startwert dieses "Game of Life" nun so unheimlich zufällig sein sollte, erschließt sich mir nicht. Speicher einfach die letzten 10000 Zahlen, die dir angeboten wurden und wenn die nächste schon da war, dann hol die Nächste Nächste. Die Zuschauer werden kaum stundenlang vor der Leinwand stehen, um irgendwann mal entrüstet auszurufen: das war doch schon mal da! :-) Gruß Rainer
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.