Zufall und Runden in vielen Programmiersprachen
Kurz: Fast jede Sprache hat eine Funktion für Zufallszahlen und eine zum Abrunden. Die Namen und das Verhalten unterscheiden sich im Detail.
Genauer: Die Tabelle zeigt, wie man in gängigen Sprachen eine Zufallszahl von 1 bis 6 und das Abrunden schreibt. Sicherheitsrelevante Zufallswerte brauchen immer den kryptografischen Generator der jeweiligen Sprache.
Im Detail
| Sprache | Würfel 1–6 | Abrunden |
|---|---|---|
| JavaScript | Math.floor(Math.random()*6)+1 | Math.floor(x) |
| Java | new Random().nextInt(6)+1 oder ThreadLocalRandom.current().nextInt(1,7) | Math.floor(x) |
| Python | random.randint(1,6) | math.floor(x) |
| C | rand() % 6 + 1 (vorher srand(time(0))) | floor(x) aus math.h |
| C++ | std::uniform_int_distribution<int>(1,6) mit mt19937 | std::floor(x) |
| C# | Random.Shared.Next(1,7) | Math.Floor(x) |
| Go | rand.IntN(6)+1 (math/rand/v2) | math.Floor(x) |
| Rust | rng.gen_range(1..=6) (Crate rand) | x.floor() |
| PHP | random_int(1,6) | floor($x) |
| Ruby | rand(1..6) | x.floor |
| Kotlin | (1..6).random() | floor(x) |
| Swift | Int.random(in: 1...6) | x.rounded(.down) |
| SQL | FLOOR(RAND()*6)+1 (MySQL) | FLOOR(x) |
| Bash | $((RANDOM % 6 + 1)) | ganzzahlige Division |
- Sicher: Python
secrets, JavaSecureRandom, JScrypto.getRandomValues, C#RandomNumberGenerator, PHPrandom_int, Gocrypto/rand. - Modulo-Falle:
rand() % nist leicht verzerrt, wenn der Zahlenraum nicht durch n teilbar ist. - Seed: Gleicher Startwert (Seed) ergibt dieselbe Zahlenfolge, nützlich für Tests.
Siehe auch: Math.random und Math.floor, Zufallszahlen: Pseudozufall und echter Zufall