Ich würde nicht unbedingt nach einer passenden Zahl suchen, sondern einfach den gegebenen Wertebereich auf den gewünschten Wertebereich umrechnen.
Code:
zufall = Runden(lese_zufalls_bytes(1) / 256 * k)
ergebnis = liste[zufall]
zufall = Integer(lese_zufalls_bytes(1)) * k div 256
ergebnis = liste[zufall]
// angenommen das Byte von lese_zufalls_bytes wird automatisch vergrößert
zufall = lese_zufalls_bytes(1) * k div 256
ergebnis = liste[zufall]
Falls es dir egal ist, wenn untere Felder öfters ausgewählt werden, als höhere, dann wäre auch sowas möglich
Code:
zufall = lese_zufalls_bytes(1) mod k
ergebnis = liste[zufall]
aber bedenke (gegeben sei
0 <= lese_zufalls_bytes < 20
und
k = 6
)
Code:
0 1 2 3 4 5
6 7 8 9 10 11
12 13 14 15 16 17
18 19