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

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.

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(zahlen); // 1. Überladung: T[]
Console.WriteLine("Nach Shuffle: " + String.Join(';', zahlen));
 
CUI.H2("nZufallsreihenfolge der Zeichenketten");
Span 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
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 übergeben.

Span 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
  //ReadOnlySpan WebsitesReadOnly = Websites;
  //ReadOnlySpan 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))

(rme)