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
Willst Du die Lottozahlen vom Mi oder Sa generieren? Sorry, konnte es mir nicht verkneifen ;-) Lolly
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
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
@Der Besucher: Das geht nicht, da dann keine gleichverteilung mehr gewährleistet ist, was bei der Aufgabenstellung recht wichtig ist...
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?
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!
@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
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.
Warum sollte das einen Unterschied machen, wenn man schon einmal gezogene Zahlen wegwirft und noch einmal zieht?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.