Ich habe einen Nummernpool (zB {3,6,7,11,20}) und ich brauche jede Nummer in der sie erscheinen meine Sammlung x mal.Wie man eine Zufallszahl aus einem Pool von Zahlen erzeugt, die einander nicht folgen
Meine Lösung war, eine Klasse zu erstellen, nennen wir es "Element", von zwei ganzen Zahlen (num, numOfAppearnces).
Ich habe einen Pool von "Elementen" in ArrayList erstellt und dann eine Zufallszahl zwischen 0 bis list.size generiert und die Zahl im Zufallsindex gespeichert. Wenn numOfAppearances auf 0 gesunken ist, löschte ich dieses Element aus der Liste.
meine Frage ist, gibt es eine andere elegante Lösung zur Generierung von Zufallszahlen, nicht aus einem Bereich?
würde ich vorschlagen, "Searching", bevor Sie fragen. http://stackoverflow.com/questions/2019417/access-random-item-in-list –
Ich würde ähnlich wie Ihre Lösung tun, sondern nur in ein Array und erzeugen Sie eine Zufallszahl zwischen 0-array.size und verwenden Sie das als ein Index. – nesohc
Die "beste" Lösung für dieses Problem hängt vom Wert von 'x' ab. Wenn es hoch ist und die Anzahl der verschiedenen Werte ebenfalls hoch ist und die Speichernutzung ein Problem darstellt, kann eine speichereffizientere Lösung gerechtfertigt sein. Ansonsten lege einfach alle Zahlen (einschließlich 'x' Kopien) in ein Array und mische es. –