关于dalmeeme的洗牌算法
- C# code
int[] numbers = new int[100]; for (int i = 0; i < 100; i++) numbers[i] = i; Random rd = new Random(); int index, realLength = numbers.Length, temp; for (int i = 0; i < 100; i++) { index = rd.Next(realLength); Response.Write(numbers[index] + "<br/>"); temp = numbers[index]; numbers[index] = numbers[realLength - 1]; numbers[realLength - 1] = temp; realLength--; }
经过网友Arcan的提醒,我看了下他的算法实质是 for i:=1 to n do swap(a[i], a[random(i,n)]);
而并非for i:=1 to n do swap(a[i], a[random(1,n)]),只不过是倒着换的。
我没有看清楚算法就误认为他的解法有误,在此对他表示抱歉。
[解决办法]
嗯,是这样的。
[解决办法]
没事,他会理解的
[解决办法]
我接受楼主的道歉。这次冲突我也有过错,在这里也为向楼主道歉。