使用 Fisher-Yates Shuffle 增强 C# 中的整数列表随机化
对于 C# 中卓越的整数列表随机化,Fisher-Yates 洗牌算法提供了显着的改进。
更有效的方法:
Fisher-Yates 洗牌从列表末尾开始。 它进行迭代,在列表的剩余未洗牌部分中为每个元素生成一个随机索引。然后将当前元素与随机选择的索引处的元素交换。
此方法超越了其他技术,因为它从逐渐变小的未洗牌元素集中进行随机选择。 该算法可概括如下:
<code>for i = n-1 down to 1 do j = random integer with 0 <= j <= i swap a[i] and a[j]</code>
为什么您当前的方法达不到要求:
您当前的随机化方法有两个主要缺点:
低效的元素选择:随着随机化的进行,定位未选择的元素进行交换的效率变得越来越低。
无限循环的可能性:如果列表包含奇数个元素,您的算法可能永远无法完成,因为每次交换都需要找到三个未选定的元素。
以上是Fisher-Yates Shuffle 如何优化 C# 中的整数列表随机化?的详细内容。更多信息请关注PHP中文网其他相关文章!