Code 【Knuth洗牌算法】如何在多个值中不重复的抽取任意个数? 编程 算法 C# 12次访问 01-26 19:53 有时我们在随机生成上会遇到一个问题,如果我们需要从多个值中**不重复**的**随机的**抽出**任意**个参数。 例如如何从8张卡牌中公平的抽取4张,且不重复。 那么洗牌算法是最好的选择。 洗牌算法,顾名思义就是如同洗牌一样将一组数据的顺序打乱。 ```csharp public class Utility : MonoBehaviour { //knuth洗牌算法 public static T[] Knuth(T[] _datelist) { for (int i = 0; i < _datelist.Length; i++) { int randomNum = Random.Range(0, _datelist.Length);//随机生成一个下标 T temp = _datelist[i]; _datelist[i] = _datelist[randomNum]; _datelist[randomNum] = temp; } return _datelist; } } ``` Read More→