假設我們要編寫一個方法來生成混洗牌。現在讓它變得非常簡單,無視西裝,所以我們有52張牌。混洗算法之間的區別
一種算法將是:
- 52個填充元件的陣列與1第一元件,2秒,等等。
- 編寫一個迭代X次的for循環,並在每次迭代期間選擇兩張隨機卡並交換它們。
- X越大,洗牌的隨機化程度越高。
另一種算法:
- 填充陣列像先前。
- 編寫一個迭代次數爲26的for循環,並在每次迭代過程中挑選兩個隨機數,並將這兩個數字放在另一個存儲新拾取數字的52個元素數組的前面。
- 在每次迭代中,從原始數組中刪除添加到新數組的兩張卡片。
我知道有更好的洗牌算法,但關於這兩個,哪一個更好,爲什麼?
「更好」按什麼標準?它不會取決於第一個算法中的「X」的值嗎? –
第一個是能夠生成更隨機的集合,但第二個是固定的運行時間和空間複雜性。如果X是26呢?還是52?在X的這兩種情況下,它與第二種算法相比如何? –
你仍然需要定義你的標準:**你是什麼意思的「更好?」** –