Метод Shuffle
С .NET 8 Shuffle принимает
Span<T> или массив и меняет
порядок элементов внутри него. Новый массив
не создаётся. Порядок после вызова случаен,
поэтому в примерах проверяют, что набор
тот же - например, сумма элементов не
изменилась. Вызывают
Random.Shared.Shuffle.
Синтаксис
int[] nums = { 1, 2, 3, 4, 5 };
Random.Shared.Shuffle(nums);
Пример
Давайте перемешать массив и сравнить сумму до и после:
using System;
class Program
{
static void Main()
{
int[] nums = { 1, 2, 3, 4, 5 };
int sumBefore = 0;
foreach (int n in nums)
{
sumBefore += n;
}
Random.Shared.Shuffle(nums);
int sumAfter = 0;
foreach (int n in nums)
{
sumAfter += n;
}
Console.WriteLine(sumBefore == sumAfter);
}
}
Результат выполнения кода:
True
Пример
Давайте перемешать через Span<int>:
using System;
class Program
{
static void Main()
{
int[] nums = { 1, 2, 3, 4, 5 };
int sumBefore = 0;
foreach (int n in nums)
{
sumBefore += n;
}
Span<int> span = nums;
Random.Shared.Shuffle(span);
int sumAfter = 0;
foreach (int n in nums)
{
sumAfter += n;
}
Console.WriteLine(sumBefore == sumAfter);
}
}
Результат выполнения кода:
True
Пример
Давайте проверим, что длина массива та же:
using System;
class Program
{
static void Main()
{
int[] nums = { 1, 2, 3, 4, 5 };
int lenBefore = nums.Length;
Random.Shared.Shuffle(nums);
Console.WriteLine(nums.Length == lenBefore);
}
}
Результат выполнения кода:
True
Смотрите также
-
метод
GetItems,
который выбирает элементы в новый массив -
Random.Shared,
через который вызываютShuffle -
метод
Next,
источник случайности -
Random,
класс генератора