Probability 一副牌的概率 对于(i=1;i

Probability 一副牌的概率 对于(i=1;i,probability,playing-cards,Probability,Playing Cards,第k张卡在插槽n中结束的概率为1/n的原因是因为第n次迭代完全确定了哪些卡在插槽n中结束!(第k张卡在插槽n中结束的概率为1/n的原因是因为第n次迭代完全确定了哪些卡在插槽n中结束!(顺便说一句,这不是洗牌列表的方法;它引入了偏见。看看Fisher-Yates洗牌算法……更多的是数学/逻辑,而不是编程相关的。我不认为一开始的伪代码足以让它“与编程相关”。这怎么不是一个真正的问题???我认为这是一个真正的问题…即使解决方案不需要ire编码,并不意味着它与编程无关。OP想要理解一段代码的数学属性。如

第k张卡在插槽n中结束的概率为1/n的原因是因为第n次迭代完全确定了哪些卡在插槽n中结束!(第k张卡在插槽n中结束的概率为1/n的原因是因为第n次迭代完全确定了哪些卡在插槽n中结束!(顺便说一句,这不是洗牌列表的方法;它引入了偏见。看看Fisher-Yates洗牌算法……更多的是数学/逻辑,而不是编程相关的。我不认为一开始的伪代码足以让它“与编程相关”。这怎么不是一个真正的问题???我认为这是一个真正的问题…即使解决方案不需要ire编码,并不意味着它与编程无关。OP想要理解一段代码的数学属性。如果有人问为什么要收集。shuffle()算法产生概率相同的随机排列?数学是理解代码属性的一部分。顺便说一句,这不是洗牌列表的方法;它引入了偏差。检查Fisher-Yates洗牌算法…更多的数学/逻辑比编程相关的我不认为开始时的伪代码足以“与编程相关”。这怎么不是一个真正的问题???我认为这是一个真正的问题…即使解决方案不需要编码,但并不意味着它与编程无关。OP希望了解一段代码的数学属性。有人问为什么收集。shuffle()算法产生概率相同的随机排列?数学是理解代码属性的一部分。请注意,正如米奇·麦特指出的,您的算法不是标准的“洗牌”你应该只考虑J和I之间的J,这会给你一个随机排列,同样可能的概率(顺便说一下,这是我在java中看到的集合.Suffle()方法。但是这只是一个旁注…我提供的答案是你问的问题:实际上,要编辑我的答案,让它稍微更数学……请注意,正如Mitch Wheat指出的,你的算法不是一个标准的“混洗”算法。你应该只考虑在I和N之间的J,这会给你一个同样可能的随机排列。(顺便说一句,这就是我如何看到用java实现的Collections.shuffle()方法)。但这只是一个旁注…我提供的答案是针对您提出的问题:-)。实际上,我将编辑我的答案,使其更加数学化。。。
for(i=1;i<=n;i++)
{
    pick a random index j between 1 and n inclusive;
    swap card[i] and card[j];
}