2015-07-01 94 views
-2

我必須測試生成隨機密鑰的應用程序。密鑰是根據系統的狀態生成的。有1,7668470647783843295832975007429e + 72個州可能。狀態變化是僞隨機的。我怎樣才能找到系統的第一個重複值狀態?在大量數據中查找重複值

我做了一些嘗試,但我很遠的解決方案。現在我使用sqlite來存儲數據,因爲如果我嘗試使用系統內存來捕獲內存不足異常。使用sqlite它是非常慢..我目前使用Sqlite只有一個文本字段(主鍵)包含系統的狀態。

我正在尋找關於如何找到系統生成的第一個重複值的想法。謝謝!

+0

也許增加一個MCVE來顯示你已經完成或嘗試了一下會有所幫助。我們無法猜測,也不應該猜測您的代碼。 – basic

+1

單獨使用SQLite,幾乎所有可以做的就是對值進行排序。實現自己的哈希表或[布隆過濾器](https://en.wikipedia.org/wiki/Bloom_filter)可能是更好的主意。 –

+0

@xXspynXx我認爲這裏的代碼並不重要,因爲我的代碼沒有問題。我只需要一個算法或類似的東西。 – rm4

回答

2

這是一個足夠大的狀態空間,我猜你不太可能真正遇到重複的值,但你幾乎肯定希望避免實際存儲所有中間值。我會嘗試基於雙指針週期檢測算法之一:https://en.wikipedia.org/wiki/Cycle_detection