Jeder kann coden / Programmieren & TicTacToe / C# EinfĂĽhrung
.NET System.Random¶
In C# ist die Klasse Random
Teil des Namensraums System
und wird verwendet, um Pseudozufallszahlen zu generieren. Die Zahlen sind deterministisch, wenn sie mit demselben Seed initialisiert werden, da die Random
-Klasse einen Algorithmus verwendet, der den Zufall simuliert.
Erstellung eines Random-Objekts¶
In [61]:
Random random = new Random();
Console.WriteLine(random.Next());
1939825708
Optional kann ein Seed angegeben werden:
In [57]:
Random randomWithSeed = new Random(42); // Der Seed 42 führt immer zu den gleichen "zufälligen" Ergebnissen.`
Console.WriteLine(randomWithSeed.Next());
Console.WriteLine(randomWithSeed.Next());
Console.WriteLine(randomWithSeed.Next());
Console.WriteLine(randomWithSeed.Next());
1434747710 302596119 269548474 1122627734
Methoden der Random
-Klasse¶
Next()
- Gibt eine nichtnegative Ganzzahl zurĂĽck.
- Beispiel:
In [6]:
int randomInt = random.Next();
Console.WriteLine(randomInt);
1178624418
Next(int maxValue)
- Gibt eine nichtnegative Ganzzahl kleiner als
maxValue
zurĂĽck. - Beispiel:
- Gibt eine nichtnegative Ganzzahl kleiner als
In [18]:
int randomInt = random.Next(10); // Werte zwischen 0 und 9
Console.WriteLine(randomInt);
1
Next(int minValue, int maxValue)
- Gibt eine Ganzzahl zurĂĽck, die mindestens
minValue
und kleiner alsmaxValue
ist. - Beispiel:
- Gibt eine Ganzzahl zurĂĽck, die mindestens
In [23]:
int randomInt = random.Next(5, 15); // Werte zwischen 5 und 14
Console.WriteLine(randomInt);
12
NextDouble()
- Gibt eine Fließkommazahl zurück, die größer oder gleich 0,0 und kleiner als 1,0 ist.
- Beispiel:
In [28]:
double randomDouble = random.NextDouble();
Console.WriteLine(randomDouble);
0,45570452535841655
NextBytes(byte[] buffer)
- Füllt ein Byte-Array mit zufälligen Bytes.
- Beispiel:
In [64]:
byte[] bytes = new byte[5];
random.NextBytes(bytes);
Console.WriteLine(string.Join(", ", bytes));
232, 218, 88, 94, 92
In [62]:
Random random = new Random();
int diceRoll = random.Next(1, 7); // Zufällige Zahl zwischen 1 und 6
Console.WriteLine($"WĂĽrfelergebnis: {diceRoll}");
WĂĽrfelergebnis: 4
Beispiel 2: Zufälliger Bruchteil¶
In [63]:
Random random = new Random();
double fraction = random.NextDouble();
Console.WriteLine($"Zufälliger Bruchteil: {fraction}");
Zufälliger Bruchteil: 0,2897057851918725
Beispiel 3: Zufällige Zeichenkette¶
In [40]:
Random random = new Random();
string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
char randomChar = chars[random.Next(chars.Length)];
Console.WriteLine($"Zufälliges Zeichen: {randomChar}");
Zufälliges Zeichen: 2
Wichtige Hinweise¶
- Determinismus: Wenn zwei
Random
-Objekte mit demselben Seed erstellt werden, erzeugen sie dieselbe Sequenz von Zufallszahlen. - Thread-Sicherheit: Die
Random
-Klasse ist nicht threadsicher. FĂĽr Multithreading kannRandom.Shared
oderThreadLocal<Random>
verwendet werden. - Vermeidung häufiger Initialisierung: Das häufige Erstellen neuer
Random
-Instanzen mit demselben Seed (z. B. ohne expliziten Seed, kurz nacheinander) kann zu identischen Ergebnissen fĂĽhren.