Werbung
Danke für eure Antworten, vor Allem auch danke an danimath für das Testen mit einem anderen Compiler (und für die lesenswerten Links). Ich benutze den alten Borland BCC32 Compiler, dessen Zufallsfunktion ich bisher für ANSI-C kompatibel hielt und deshalb darauf vertraut habe.
Bei 10 Millionen Spielen rechnet das Programmchen eine Weile und kommt dann auf völlig unglaubwürdige Ergebnisse (hier wurde "if(serie==3)setnow=1;" benutzt):
![]()
Das ist auch, bis auf sehr wenige Ausnahmen, mit verschiedenen srand() Werten reproduzierbar.
Da ich auch grade keinen anderen C Compiler habe, werde ich vielleicht den Spass mal in php umsetzen. Vielleicht hat auch jemand von euch ein paar brauchbare Zufalls-Algorithmen.
Liebe Gruesse von der Katze
Aus dem Link von danimath:
Ok, diesen Generator habe ich nun mal verwendetKnuth suggests various generators, including one that combines the first two table entries above:
- xn+1 = 48271*xn mod (231 - 1),
yn+1 = 40692*yn mod (231 - 249),
zn = (xn - yn) mod (231 - 1),
Und sieheda, auch wenn der Generator nicht perfekt ist, lässt sich damit kein Vorteil beim Spiel "mit system" mehr feststellen.Code:unsigned long lastrandom1,lastrandom2; unsigned long random() { unsigned long z=(lastrandom1-lastrandom2)%2147483647; // 2^31-1 lastrandom1=(48271*lastrandom1)%2147483647; lastrandom2=(40692*lastrandom2)%2147483399; // 2^31-249 return z; } // Seed: time_t t; time(&t); srand((unsigned int)t); lastrandom1=rand(); lastrandom2=rand();
Hallo!
So wie der Richard schrieb, fast perfekte Zufallsgeneratore lassen sich (wie in der Natur) nut Analog hardwaremässig realisieren. Besser und einfacher als "rosa" ist "weiss" Rauschen. Als Lekture würde ich das empfehlen: https://www.roboternetz.de/community...%9Fes-Rauschen![]()
Geändert von PICture (06.10.2011 um 16:50 Uhr)
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Ich wollt's noch vorschlagenEigentlich sind bei den aktuellen Pseudo-Zufallszahlengeneratoren nur die in der Art von D. Knuth verbreitet (in Java wird sogar explizit drauf verwiesen). Wer das Geld ausgeben möchte (oder eine gute Bibliothek in der Nähe hat), mag sich gern mal "The Art of Computer Programming" von D. Knuth zulegen (oder mal reinschauen). Neben Pseudozufallszahlen gibt es da auch so spannende Sachen wir Suchen Sortieren, Listen,... Man kann also viel über grundlegende Algorithmen lernen.
"Echte" Zufallszahlen sind - wie schon PICture und Richard geschrieben haben - nicht mit Algorithmen zu erzeugen. Das beste ist immer noch ein radioaktives Präparat mit einen Zähler; aber das bringt wieder andere Probleme![]()
![]()
![]()
viele Grüße
Andreas
#define true ('/'/'/')
#define false ('-'-'-')
Wenn jemand Lust auf einfache Experimente hat, dann: https://www.roboternetz.de/community...rator-(gelöst) .![]()
Übrigens, ich werde sehr dankbar für Ausprobieren und Berichten. Am einfachsten wäre fehlerhaftes Unterprogramm für internen ADC Wandler., falls in dem µC vorhanden.![]()
Geändert von PICture (06.10.2011 um 17:38 Uhr)
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Hmm, ich (dachte) bisher das der Radioaktive Zerfall ein höchst zuverlässiges Signal erzeugt, weit entfernt von Zufall? Als (einigermaßen) guter Zufalls Generator, sollte ein Stück Draht mit offenen Ende an einen ADC Port taugen. Mit der Länge muss man etwas testen damit nicht gerade 50 Hz empfangen werden.
Gruß Richard
Wahrscheinlich meinst du, dass die max. zulässige für ADC Amplitude der empfangener Netzspannung nicht uberschritten wird. Ich würde deshalb an ADC Pin zwei Dioden anschliessen, falls es nicht intern geschützt ist (siehe Code).
Code:VCC + | D1 - lange "Antenne" ^ | ------------------------------------------------+---> ADC Pin | D2 - ^ | === GND (created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)
Geändert von PICture (08.10.2011 um 12:35 Uhr)
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Lesezeichen