Tipp der Woche
06.04.2023, 08:56 Uhr

.NET 8: Neue Zufallsmethoden

In .NET 8 wurden neue Zufallsmethoden eingeführt, welche einige Aufgaben deutlich vereinfachen.
(Quelle: Microsoft.com)
GetItems(): Mit den neuen Methoden System.Random.GetItems und System.Security.Cryptography.RandomNumberGenerator.GetItems können Sie eine bestimmte Anzahl von Elementen zufällig aus einer Eingabemenge auswählen. Das folgende Beispiel zeigt, wie man mit System.Random.GetItems() (auf der von der Eigenschaft Random.Shared bereitgestellten Instanz) zufällig 31 Elemente in ein Array einfügt. Dieses Beispiel könnte in einem "Simon"-Spiel verwendet werden, bei dem sich die Spieler eine Folge von farbigen Knöpfen merken müssen.
private static ReadOnlySpan<Button> s_allButtons = new[]
{
    Button.Red,
    Button.Green,
    Button.Blue,
    Button.Yellow,
};

...

Button[] thisRound = Random.Shared.GetItems(s_allButtons, 31);
...
Shuffle<T>(): Mit den neuen Methoden Random.Shuffle und RandomNumberGenerator.Shuffle<T>(Span<T>) können Sie die Reihenfolge einer Spanne zufällig festlegen. Diese Methoden sind nützlich, um Trainingsverzerrungen beim maschinellen Lernen zu reduzieren – damit das erste Ding nicht immer das Training und das letzte Ding immer der Test ist. So wird Shuffle<T> eingesetzt:
YourType[] trainingData = LoadTrainingData();
Random.Shared.Shuffle(trainingData);

IDataView sourceData = mlContext.Data.LoadFromEnumerable(trainingData);

DataOperationsCatalog.TrainTestData split = mlContext.Data.TrainTestSplit(sourceData);
model = chain.Fit(split.TrainSet);

IDataView predictions = model.Transform(split.TestSet);
// ...
Diese und weitere Neuerungen in .NET 8, das derzeit als Vorschauversion verfügbar ist, finden Sie auf dieser Seite.


Das könnte Sie auch interessieren