Kann man statt einer Tabelle nicht einfach die RND Funktion verwenden?
MfG Klebwax
Kann man statt einer Tabelle nicht einfach die RND Funktion verwenden?
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Hallo
Ich mag ja nicht gern klugscheissen, aber "echte" Zufallszahlen gibt es nicht!RND erzeugt keine echten Zufallszahlen
Gruß
mic
Geändert von radbruch (31.01.2013 um 14:41 Uhr)
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Das ist schon klar, es ging mir eher um die Frage:
Eine (pseudo)Zufallsfolge liefert typischerweise eine Funktion, ohne Tabelle. Nur den Startwert muß man sich durch einen von extern geholten Wert bestimmen. In C kann man den random seed einstellen, ich weiß nicht ob das in Basic auch so geht. Die wirkliche Frage ist eher, wo bekomme ich bei einer gegebenen Hardware einen Startwert her. Wenn es eine Starttaste gibt, kann man die Zeit vom Einschalten bis zum Drücken der Taste nehmen. Ob ein offener ADC Eingang etwas passendes liefert, muß man ausprobieren. Dann mit diesem Wert den random seed einstellen, oder wenn das nicht geht, sooft wie diese Zahl vorgibt RND aufrufen und das Ergebniss verwerfen. Ab dann ist das Muster sicher nicht mehr zu erkennen. Besser als eine Tabelle mit 16 Einträgen ist das allemal.Und wie soll ich das Zufallsprogramm realisieren, ohne Datentabellen?
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Ich wollte gerade aus Interesse heraus eine Funktion schreiben, die einen Zufallswert liefert und bin dabei auf etwas interessantes in der Bascom-Hilfe gestoßen:
The RND() function returns an Integer/Word and needs an internal storage of 2 bytes. (___RSEED). Each new call to Rnd() will give a new positive random number.
Notice that it is a software based generated number. And each time you will restart your program the same sequence will be created.
You can use a different SEED value by dimensioning and assigning ___RSEED yourself:
Dim ___rseed as word : ___rseed = 10234
Dim I as word : I = rnd(10)
When your application uses a timer you can assign ___RSEED with the timer value. This will give a better random number.
Also kann man den Seed von der RND-Funktion direkt mit einem Timerwert laden, was für die Anwendung des Threadstarters einen ausreichenden Zufall darstellt.
![]()
Grüße
Thomas
Bei einem Programm ohne Verzweigungen (z.B. direkt nach der Initialisierung) ist der Timerwert immer gleich, weil sich auch der Timer am Kontrollertakt orientiert!Also kann man den Seed von der RND-Funktion direkt mit einem Timerwert laden
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Nabend,
ich werde morgen oder übermorgen mal ein wenig mit euren Ideen herum experimentieren.
Ich könnte den Timer ja evtl. nach dem 50 Bild laden lassen, oder auch noch später (habe 7000 Bilder), was wäre Sinnvoll?
Den Timer früher oder später Initialisieren?
Mit freundlichem Gruß
Lars
Lesezeichen