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().

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen

(Bild: Netfalls Remy Musser/Shutterstock)

Lesezeit: 1 Min.
Von
  • Dr. Holger Schwichtenberg

Microsoft hat in .NET 8.0 die Klasse System.Random um neu neue statische Funktionen erweitert.

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

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);
}

Ausgabe des Codebeispiels zu Random.Shared.Shuffle()

(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();
}

Ausgabe des Codesbeispiels zu von Random.Shared.GetItems()

(Bild: Screenshot (Holger Schwichtenberg))

Die Serie zu den Neuerungen in .NET 8.0

(rme)