Aufgabe
Bei einer positiven Ganzzahl, die n
kleiner als 2^30
die von Ihnen als Eingabe angegebene ist, sollte Ihr Code eine zufällige Ganzzahl zwischen 0
und n
einschließlich ausgeben . Die von Ihnen generierte Zahl sollte einheitlich und zufällig gewählt werden . Das heißt, jeder Wert von 0
bis n
muss mit gleicher Wahrscheinlichkeit auftreten (siehe Regeln und Vorsichtsmaßnahmen).
Regeln und Vorsichtsmaßnahmen
Ihr Code kann davon ausgehen, dass jeder in Ihre Sprache oder Standardbibliothek eingebaute Zufallszahlengenerator, der behauptet, gleichmäßig zufällig zu sein, tatsächlich gleichmäßig ist. Das heißt, Sie müssen sich keine Gedanken über die Qualität der von Ihnen verwendeten Zufallsquelle machen. Jedoch,
- Sie müssen feststellen, dass Ihr Code eine einheitliche Zufallszahl von
0
bis korrekt ausgibt, wenn die von Ihnen verwendete Zufallsquelle einheitlich istn
. - Alle Argumente beim Aufrufen einer eingebauten oder einer zufälligen Bibliotheksfunktion müssen konstant sein. Das heißt, sie müssen völlig unabhängig vom Eingabewert sein.
- Ihr Code wird möglicherweise mit Wahrscheinlichkeit 1 beendet, anstatt garantiert zu werden, dass er beendet wird.
Anmerkungen
randInt(0,n)
ist ungültig, da die Eingabe als Argument für eine eingebaute Funktion oder eine Bibliotheksfunktion verwendet wird.rand()%n
wird im Allgemeinen keine einheitliche Zufallszahl geben. Wennintmax == 15
undn = 10
, als ein Beispiel von betseg, dann werden Sie viel wahrscheinlicher bekommen0-5
als6-10
.floor(randomfloat()*(n+1))
gibt auch im Allgemeinen keine einheitliche Zufallszahl an, da es endlich viele verschiedene mögliche Gleitkommawerte zwischen 0 und 1 gibt.
rng()
bietet0
-100
, wennn = 75
und Funktion istrng()%75
, dann 0-25 wird häufiger ...)