可以說應用程序需要高效地存儲大量混洗甲板。是否存在一個恆定的空間,恆時,算法使得:算法跟蹤大量混洗甲板
index = draw_from_shuffled(element_count, number_of_draws_made, random_seed)
返回的值是下一個卡從有序集合繪製指數。此外,索引不會重複,即:同一張卡片不會被重複繪製兩次。需要存儲大量不同洗牌的套牌將被替換爲隨機數字,該隨機數字提供一種用於訂購該套牌的初始化向量。存儲一個n
數量的混洗甲板,將需要存儲整數值的數量n
。
那麼像這樣的算法存在?沒有固定時間的一種方法是使用bloom filter來跟蹤已經繪製的卡片。數據要求是恆定的,但最壞的算法複雜度是n!
,這是不可取的。
我不明白最壞的情況是怎麼樣的。我的意思是可能發生的最糟糕的情況是下一張牌是最後一張牌,會導致最壞情況下'n' – smac89
您的意思是算法使用的內存不應該取決於套牌的數量? – perreal
如果你真的想要一個隨機數,我不認爲你可以在恆定的空間和恆定的時間內找到類似的東西。因爲你需要記住你已經採取了什麼卡。除非你想要一些不是真正隨機的東西,例如一張牌的下一張牌是由前一次抽籤或前兩次抽籤決定的。 – justhalf