rand() liefert immer gleiche Ergebnisse

Gast #5998172
Lesenswert?

Andi schrieb:
> Verstehe ich nicht so ganz. Soll eine Zufallsfunktion nicht
> Zufallszahlen erzeugen? Was bringt mir das, wenn da immer die selben
> Zahlenfolgen bei herauskommen? Ist das dann nicht etwas nutzlos?

"Echte" Zufälle sind mit einen µC kaum zu erzeugen!

Versuch das mal, und du wirst sehen....
#5998180
Lesenswert?

Andi schrieb:
> Verstehe ich nicht so ganz. Soll eine Zufallsfunktion nicht
> Zufallszahlen erzeugen?

Ein Computer weiß nicht, was Zufall ist. Er kann nur logische Dinge 
berechnen.

Er kann also nur eine bekannte Zahl als Basis nehmen und daran eine 
wilde, aber immer gleiche Rechenoperation vornehmen, um auf die nächste 
Zufallszahl zu kommen.

Bei jedem Start des Controllers ist dieser Startwert gleich, daher immer 
die gleiche Zahlenfolge.

Es gibt aber die Möglichkeit, diesen "Seed" vorzugeben. Zum Beispiel mit 
dem Wert eines unbenutzten ADC-Einganges, der ein bisschen Rauschen 
empfängt.
Gast #5998191
Lesenswert?

Andi schrieb:
> Verstehe ich nicht so ganz. Soll eine Zufallsfunktion nicht
> Zufallszahlen erzeugen? Was bringt mir das, wenn da immer die selben
> Zahlenfolgen bei herauskommen? Ist das dann nicht etwas nutzlos?


Das hat tatsächlich einen Nutzen.

Angenommen, Du willst ein Programm testen, dass Du gerade schreibst.

Programmierer wollen, dass ihre Programme sich vorhersehbar, auf eine 
genau bestimmte Weise verhalten.

Das muss man davon unterscheiden, dass sich ein Programm im Einsatz, 
durch Zufallszahlen zufällig verhält. In einem Spiel etwa, sollen Fische 
im Teich an zufälligen Stellen auftauchen oder zufällige Strecken 
entlangschwimmen.

Während der Tests aber, also während man das Programm noch schreibt, 
will der Programmierer testen, ob der Fisch, wenn eine bestimmte 
Zufallszahl genommen wird, auch genau eine zu dieser Zahl gehörende 
Strecke schwimmt (oder an einer zu dieser Zahl gehörenden Stelle 
auftaucht).

Dazu testet er mit rand() und einem bestimmten Initialisierungswert, 
damit er Veränderungen am Programmtext auch beurteilen kann, ob sie 
wirksam sind und wie gewünscht funktionieren.

Würde er tatsächliche Zufallszahlen zum Test nehmen, dann würde sich das 
Programm jedesmal anders verhalten und er müsste warten bis irgendwann 
einmal gerade die Zahl "gezogen" wird, für die er eine Änderung im 
Programm gemacht hat.

Analog gilt das für Folgen von Zufallszahlen. Der Programmierer kann 
damit das zeitlich ausgedehnte Verhalten und das letztliche Ergebnis 
testen.
Moderator Persönliche Seite #5998192
Lesenswert?

Arduino Fanboy D. schrieb:
> "Echte" Zufälle sind mit einen µC kaum zu erzeugen!

Doch: mit allem, was physikalisch bedingt zufällig ist. Ob das nun ein 
ADC-Eingang ist (besser als "offen" wäre die Beschaltung mit einer 
rauschenden Z-Diode), oder ob es andere nicht vorhersagbare Dinge wie 
der Zeitabstand zwischen Tastenbetätigungen oder etwas ganz anderes ist, 
muss man von Fall zu Fall selbst organisieren.
Gast #5998218
Lesenswert?

Bei dem Thema fällt mir das hier wieder ein:

Für richtig gute Zufallszahlen hat das Unternehmen Cloudflare 100 
Lavalampen eingesetzt:
https://winfuture.de/news,100452.html
https://www.cloudflare.com/learning/ssl/lava-lamp-encryption/

Diese 100 Lampen werden von einer Kamera fotografiert, aus den Bildern 
werden Zufallszahlen generiert und damit werden letztendlich Schlüssel 
für SSL und TLS generiert.
Moderator Persönliche Seite #5998306
Lesenswert?

M. K. schrieb:
> Echten Zufall hat man doch nur wenn man als Basis z.B. das Rauschen
> eines Transistors mit rein nimmt

Nein, nicht nur. Man hat ihn überall, wo sich nicht vorhersagbare 
physikalische Effekte überlagern. Die Lavalampe wurde ja schon genannt.

Wenn man mit dem offenen ADC-Eingang allerdings nur das überall 
vagabundierende 50-Hz-E-Feld der Niederspannungsversorgung misst, dann 
hat man dadurch allein eben auch keinen Zufall.
Gast #5998383
Lesenswert?

Andi schrieb:
> Was bringt mir das, wenn da immer die selben
> Zahlenfolgen bei herauskommen? Ist das dann nicht etwas nutzlos?

Zum Beispiel wird diese Eigenschaft bei dem Spiel Senso (auch bekannt 
als Simon) ausgenutzt. Es erzeugt scheinbar zufällige Tonfolgen, die bei 
jeder Spielrunde um einen Ton länger werden. Die Ton-Sequenz muss nicht 
gespeichert werden, weil jede Berechnung immer die gleiche Zahlenfolge 
liefert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren