Forum: FPGA, VHDL & Co. lottozahlen in vhdl generieren


von Ronny S. (aquarius79)


Lesenswert?

Hallo Zusammen,

Ich möchte gerne für eine Belegarbeit einen "Lottozahlengenerator" mit 
dem Spartan-II XC2S150 und Xilinx realisieren.
Die Idee ist es mittels Zähler 4 Zahlen auf vier 7-Segmentanzeigen im 
Bereich von 1 bis 20 in Enlosschleife laufen zu lassen. Sobald ein 
entsprechender Taster betätigt wird, soll die erste Zahl auf der 1. 
Anzeige angezeigt werden. Bei Betätigung von 3 weiteren Tasters, sollen 
auch die übrigen Zahlen generiert werden.
Problem ist nur, dass ich keinen Schimmer habe (blutiger 
VHDL-Anfänger!), wie ich das in VHDL umsetzen soll.
Die nächste Hürde ist dann noch, dass keine Zahl doppelt vorkommen darf. 
Für jede Hilfe bin ich sehr dankbar.

VG Ronny

von Lolly (Gast)


Lesenswert?

Willst Du die Lottozahlen vom Mi oder Sa generieren?

Sorry, konnte es mir nicht verkneifen ;-)

Lolly

von Marcus (Gast)


Lesenswert?

Bist Du es DB1...

Ach ja der Spruch war wirklich gut und mein PC geht wieder, war wirklich 
nur die Grafikkarte. Auf die nächsten 10 Jahre.

Gruß
Marcus

von Der Besucher (Gast)


Lesenswert?

Es ist also ein Lotto 4 aus 20?
Warum reicht nicht ein Taster aus, um nacheinander alle Zahlen 
nacheinander zu generieren?
Vorschlag: Tastendruck 1 bis 4 generiert die Zahlen. Tastendruck 5 
löscht die Anzeige wieder (und die gezogenen Zahlen). Dann gehts wieder 
von vorne los.
Das Problem mit den doppelten Zahlen kannst du einfach so lösen, dass du 
einfach die nächste Zahl aus deinem Zähler nimmst, wenn eine Zahl 
doppelt gezogen wird (und wenn die gezogen wurde nimmst du wieder die 
nächste).
Für den Taster benötigst du eine gute Tastenentprellung.

Der Besucher

von S. K. (nullgeist)


Lesenswert?

@Der Besucher:
Das geht nicht, da dann keine gleichverteilung mehr gewährleistet ist, 
was bei der Aufgabenstellung recht wichtig ist...

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

oder du überspringst einfach beim Zählen die schon gezogenen Zahlen 
(indem du die gerade angezeigte Zahl mit den vorherigen bei jedem 
Schritt vergleichst), so kann keine Zahl doppelt vorkommen. Aber wenn 
ein Mensch die Zahlen auf dem LCD sieht und dann dementsprechend drückt, 
ist das doch nicht wirklich zufällig? Wäre dafür nicht sowas wie ein 
analoger Zufallszahlengenerator (Rauschgenerator) sinnvoller?

von pedro (Gast)


Lesenswert?

wenn man für jede zahl einen taster hat: shuffle während taste gedrückt 
(zähler mit systemclock hinaufzählen lassen), anzeigen wenn taste 
losgelassen wird. da der fpga eine sehr hohe frequenz besitzt, bekommt 
man eine super random-zahl.

damit zahlen nicht doppelt vorkommen: vergleichen mit schon gewürfelten 
zahlen (if, else).

nicht vergessen: zähler begrenzen und wieder auf 1 (oder 0?) 
zurücksetzen wenn grösser 20.

ps: gute tasterentprellung benötigt!

von Der Besucher (Gast)


Lesenswert?

@nullgeist: als ob das jemand merkt...
Ok, um eine wirkliche Lottosimulation hinzubekommen, muss man die 
Zählweite nach jeder gezogenen Zahl decrementieren und dann die 
gezogenen Zahlen ummappen. Denn nach jeder gezogenen Zahl reduziert sich 
der Pool der nicht gezogenen Zahlen. Vielleicht kann das jemand 
berechnen, ob das einen Unterschied in der Ziehungswahrscheinlichkeit 
ausmacht zu einem einfachen neuen Ziehungsversuch, wenn die Zahl schon 
gezogen wurde.

Der Besucher

von Hagen R. (hagen)


Lesenswert?

ja tut es, "Ziehung mit zurück legen" hat andere bedingte 
Wahrscheinlichkeiten als "Ziehung ohne zurück legen". Ein ständig 
gemachter Fehler bei vielen Lottogeneratoren.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Warum sollte das einen Unterschied machen, wenn man schon einmal 
gezogene Zahlen wegwirft und noch einmal zieht?

von max (Gast)


Lesenswert?

da macht es keinen unterschied. es fängt an einen unterschied zu machen, 
wenn du einfach nur einen zähler hast und wenn du ne zahl ziehst die 
schon dran ist, die nächste nimmst! (die wahrscheinlichkeit, dass so 
eine zahl nach einer gezogenen drankommt ist doppelt so hoch wie für die 
anderen)

du könntest auch ein PRBS generator implementieren, der 4 mal so groß 
ist wie die wortbreite die du erwartest und die zahl quasi "auf ein mal" 
generieren.

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
Noch kein Account? Hier anmelden.