.NET如何写正确的“抽奖”——数组乱序算法
数组乱序算法常用于抽奖等生成临时数据操作。...其实正确的代码每一个标点符号都不能错,下面我将演示一些错误的示例
错误示例1
多年前我看到某些年会抽奖中使用了代码(使用 JavaScript、错误示例):
[0,1,2,3,4,5,6,7,8,9]....这种算法虽然正确,但它消耗了过多的内存,时间复杂度为整个排序的复杂度,即 O(N logN)。
乱个序而已,肯定有更好的算法。...没错,我们可以倒着写这个函数,首先来看这样的代码:
T[] ShuffleCopy(IEnumerable data, Random r)
{
var arr = data.ToArray...只有写完很多个不正确的版本,才能体会出写出正确的代码,每一个标点符号都很重要的感觉。