Neu in .NET 8.0 [11]: Neue Zufallsfunktionen
In der Klasse System.Random gibt es nun eine Zufallsreihenfolge mit Random.Shared.Shuffle() und Zufallsauswahl via Random.Shared.GetItems().

(Bild: Netfalls Remy Musser/Shutterstock)
- Dr. Holger Schwichtenberg
Microsoft hat in .NET 8.0 die Klasse System.Random
um neu neue statische Funktionen erweitert.
Random.Shared.Shuffle()
sortiert eine gegebene Menge zufällig. Übergeben werden kann ein Objektmenge des Typs System.Array
oder System.Span<T>
.
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));
CUI.H2("\nZufallsreihenfolge 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);
}
(Bild:Â Screenshot (Holger Schwichtenberg))
Random.Shared.GetItems()
liefert eine Zufallsauswahl aus einer Menge. Hier darf man ein Array oder ein ReadonlySpan<T>
ĂĽbergeben.
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"];
CUI.H2("Zufallsauswahl 3x3");
for (int i = 0; i < 3; i++)
{
// mit ReadonlySpan<T>
//ReadOnlySpan<string> WebsitesReadOnly = Websites;
//ReadOnlySpan<string> Zufallsauswahl3 = Random.Shared.GetItems(WebsitesReadOnly, 3);
// oder Array T[]
string[] Zufallsauswahl3 = Random.Shared.GetItems(Websites.ToArray(), 3);
foreach (string site in Zufallsauswahl3)
{
CUI.LI(site);
}
Console.WriteLine();
}
(Bild:Â Screenshot (Holger Schwichtenberg))
(rme)