关于随机洗牌
随机洗牌是指随机打乱一个数组中的元素,得到一个新的数组。下面给出两种随机置乱算法的实现思路,两种实现方式的置乱效果没有本质区别。
1.?扰乱算法1:
正确性:?可以用“彩票公平”来证明
2.?中断算法2:
正确性:
假设for循环执行步骤k后,前k个素数已经被正确随机打乱,即对于原数组的前k个元素中的任意一个,它们现在位于a[i],i ∈ [0,k-1]中的概率为1/k,那么,在for循环执行步骤k+1后,前k+1个元素也会被正确随机打乱。因为,从步骤k+1的运算中,很容易知道,对于k+1元素,它出现在[0...k]是1/(k+1),对于前k个元素,经过k+1。(k+1)) = 1/(k+1),其出现在k位置的概率为1/(k+1),所以对于前k个元素,其出现在[0...k]是也。