Kolumne: .NETversum

Neue Zufallsfunktionen in .NET 8.0

Neue Zufallsfunktionen in .NET 8.0

Kolumne: .NETversum

Neue Zufallsfunktionen in .NET 8.0


In .NET 8.0 hat Microsoft die Klasse System.Random um zwei neue statische Funktionen erweitert. System.Random ist eine Klasse, die es seit dem .NET-Framework 1.0 in .NET gibt. System.Random bietet Funktionen zur Erzeugung von Pseudozufallszahlen.

In .NET 8.0 ist die statische Methode Random.Shared.Shuffle() eine neue Funktion, die verwendet wird, um eine Liste von Elementen in zufälliger Reihenfolge zu mischen. Sie bietet eine bequeme Möglichkeit, die Reihenfolge von Elementen in einer Liste zu verändern, ohne eigene Logik für das Mischen implementieren zu müssen.

Bei der Methode Random.Shared.Shuffle() kann eine Objektmenge des Typs System.Array oder System.Span<T> übergeben werden. Listing 1 erzeugt erst eine geordnete Zahlenreihe der Zahlen von 1 bis 20 und mischt diese dann mit Shuffle() zufällt. Listing 2 mischt eine gegebene Liste von Zeichenketten mit Website-URLs (Abb. 1).

Listing 1: Einsatz von Random.Shared.Shuffle() für ein Array von Integer-Werten

CUI.H2("Zufallsreihenfolge der Zahlen 1 bis 20");
int[] zahlen = Enumerable.Range(1, 20).ToArray();
Console.WriteLine("Vor Shuffle: " + String.Join(';', zahlen));
Random.Shared.Shuffle<int>(zahlen); // 1. Überladung: T[]
Console.WriteLine("Nach Shuffle: " + String.Join(';', zahlen));

Listing 2: Einsatz von Random.Shared.Shuffle()

CUI.H2("Zufallsreihenfolge der Zeichenketten");
Span<string> Websites = ["www.IT-Visions.de", "angular-schulungen.de", "dotnettraining.de", "www.dotnetframework.de", "www.dotnet8.de", "dotnet-lexikon.de", "www.dotnet-doktor.de", "www.powershell-schulungen.de"];
Random.Shared.Shuffle(Websites); // 2. Überladung: span<string>
foreach (string site in Websites)
{
  CUI.LI(site);
}
schwichtenberg_kolumne_1

Abb. 1: Ausgabe der Listings 1 und 2

Die statische Methode Random.Shared.GetItems() ist eine weitere Neuerungen in .NET 8.0, die verwendet wird, um eine zufällige Auswahl von Elementen aus einer gegebenen Sammlung zurückzugeben. Bei GetItems() darf man ein Array oder ein ReadonlySpan<T> hereingeben.

Anders als die Shuffle()-Methode, die die Reihenfolge der Elemente ändert, gibt GetItems() eine neue Sammlung zurück, die eine zufällige Auswahl der Elemente aus der ursprünglichen Sammlung enthält.

Diese Methode kann nützlich sein, wenn Sie eine Teilmenge von Elementen aus einer größeren Sammlung zufällig auswählen müssen, ohne die ursprüngliche Sammlung zu ändern. Sie könnten beispielsweise GetItems() verwenden, um eine zufällige Auswahl von Fragen aus einer Fragenbank zu erhalten oder eine zufällige...