-
-
Erfahrener Benutzer
Roboter Experte
Bessere Zufallszahlen in Bascom
Ich stehe vor dem Problem, dass ich einen Ablauf recht zufällig laufen haben möchte und an verschiedenen Stellen im Programm RND() nutze.
Dooferweise scheint es so, als ob Bacom stets gerade, ungerade, gerade, ungerade usw. würfelt.
Falls man nur aus zwei Optionen wählt kommt man so u.U. erst immer nur mit Option 1 raus.
Hat jemand noch Tricks/Tipps?
___rseed bringts nicht.
-
Erfahrener Benutzer
Robotik Visionär
Für den Startwert des Zufallgeneratorsgenerators muß man man auf eine Echte Zufallszahl zurückgreifen. Das kann z.B. der AD-wandler oder ggf. ein Wert aus ICP Register von Timer 1 sein.
Wenn die interne RND() Funktion von Bascom nicht gut genug ist, könnte man eine Pseudozufallszahlenfunktion auch von Hand Programmieren. Beispiele solle man finden, wenn auch meistens in C.
-
Erfahrener Benutzer
Lebende Robotik Legende
Hallo!
@ stefan_Z
Als bisher bester hardware Zufallszahlgenerator hat sich bei mir in der Praxis eine unentprellte Taste bewiesen.
MfG
-
Erfahrener Benutzer
Robotik Visionär
@picture
Wenn man einen Taster hat, dann geht am besten den Timer1 auf voller Geschwindigkeit laufen lassen, und dann die ICP Funktion über den Taster zu nutzen. Die Zeit, wann der Taster zuletzt Signal gegeben hat ist halt recht zufällig.
Beim Prellen hat man oft nur einige wenige Pulse, selten mehr als 10.
-
Erfahrener Benutzer
Lebende Robotik Legende
@ Besserwessi
Du hast völlig recht mit der Impulszahl und wenn man grössere Zahlen braucht, könnte man jedes "Prellen" als Ziffer gewünschter Zahl nehmen.
Ich habe es schon vor zig Jahren verwenndet, wo noch keine µCs mit Timers gegeben hat. Mann könnte auch anstatt einer Taste von µC gesteuertes Kontakt von z.B. Reedrelais verwenden.
MfG
-
Erfahrener Benutzer
Roboter Experte
hmm das soll ja alles recht häufig und auch nicht sooo zufälig sein - ein Isotop werde ich mir nicht zulegen 
Die besseren Algos sehen aber schon echt komplex aus muss man sagen, werde mir das letzte bit vom ADC mal ansehen...
-
Erfahrener Benutzer
Roboter Genie
oder den ad compare eingang nehmen bissel kabel das fängt auch rauschen ein und den zweiten eingang mit dreh poti in die rausch stellung drehen
-
Erfahrener Benutzer
Robotik Visionär
Die standard methode für echten Zufall ist das Rauschen einer Zenerdiode oder eines Transistors Verkehrt herum. Einfach nur ein Draht, fängt wahrscheinlich 50 Hz ein, und ist damit nicht zuverlässig. So eine echte Zufallgröße verwendet man selten allein, sondern , meistens in kombination mit einer Pseusozufallszahl. Das rauchen sorgt für echten Zufall, und die Pseudozufallszahl sorgt dafür das so etwas wie Gleichverteilung usw. gut hinbekommt.
-
Neuer Benutzer
Öfters hier
Der RND-Algorithmus in Bascom wurde kürzlich verbessert - updaten auf 9.8.
-
Erfahrener Benutzer
Lebende Robotik Legende
Hallo!
So wie der Besserwessi schon geschrieben hat, rein Softwaremässiger Zufallsgenerator ist nicht möglich, weil ein Prozessor selber nicht zufällig arbeitet, wenn sein Programm logisch aufgebaut ist. Deswegen alle rein softwaremässige Algorithmen können nur Pseudozufallszahlen erzeugen und für echte Zufallszahlen ist ein Signal von "aussen" notwendig.
Den Vorschlag vom Besserwessi, ein ADC an weissem Rauschen, finde ich optimal.
MfG
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen