lottozahlen in vhdl generieren

#1922742
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
Gast #1922846
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
Persönliche Seite #1922929
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?
Gast #1923593
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!
Gast #1928590
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
Gast #1933466
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.

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