使用 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中文網其他相關文章!