- def shuffle_correct(cards):
- for i in range(len(cards)):
- randomi = i+ random.randint(0,len(cards)-i-1)
- card[i],cards[randomi] = cards[randomi],card[i]
- #对方法二的解释:
- #首先在0 - n-1下标中产生一个随机下标,交换第一个和和随机下标,所以任何数字出现在第一个位置的概率是1/n
- #第二次时在1- n-2 中随机产生下标,产生1- n-2 随机数的概率时1/n-1,但是第二次抽中第一次没有选中这个数的概率时n-1/n
- #所以第二次出现在第二个位置的概率还是1/n,
- #依次类推,所以每个数出现的概率都是1/n,就能完成对一个数组进行洗牌的操作