📜  c# shuffle - C# (1)

📅  最后修改于: 2023-12-03 15:29:46.254000             🧑  作者: Mango

C# Shuffle

C# Shuffle 是一个 C# 编程语言的库,旨在提供各种用于打乱数组和列表的算法。这个库可以用于任何需要打乱集合元素的场合,例如生成随机抽奖、对列表的排序等。

安装

你可以通过 NuGet 仓库来安装 C# Shuffle。在 Visual Studio 中,打开 NuGet 管理器并搜索 "C# Shuffle",然后选择安装。

也可以在命令行中通过以下命令来安装:

PM> Install-Package CSharpShuffle
用法

打乱数组

使用 Fisher-Yates shuffle 算法来对一个数组进行打乱,可以通过以下代码实现:

using CSharpShuffle;

int[] numbers = { 1, 2, 3, 4, 5 };
numbers.Shuffle();

foreach (int number in numbers)
{
    Console.Write(number + " ");
}

这段代码将打印出一个随机排列的数字数组。

打乱列表

与数组打乱类似,也可以使用 Fisher-Yates shuffle 算法来对一个列表进行打乱,可以通过以下代码实现:

using CSharpShuffle;

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Shuffle();

foreach (int number in numbers)
{
    Console.Write(number + " ");
}

高级选项

你可以通过传递一个自定义的随机数生成器来控制打乱结果的随机性。例如,可以使用 Random 类来实现:

using CSharpShuffle;

int[] numbers = { 1, 2, 3, 4, 5 };
numbers.Shuffle(new Random());

foreach (int number in numbers)
{
    Console.Write(number + " ");
}

如果要控制打乱的范围,还可以使用 Shuffle 方法的重载版本:

using CSharpShuffle;

int[] numbers = { 1, 2, 3, 4, 5 };
numbers.Shuffle(new Random(), 2, 4); // 打乱索引为 [2, 4] 的元素

foreach (int number in numbers)
{
    Console.Write(number + " ");
}

这段代码将只打乱索引为 2 到 4 的元素,其余部分不变。

总结

C# Shuffle 是一个方便简洁的 C# 打乱库,适用于许多打乱集合元素的场合。通过 Fisher-Yates shuffle 算法,可以保证打乱结果的随机性和公平性。还可以通过传递自定义的随机数生成器和索引范围来控制打乱结果的随机程度。