我想要一個僞隨機數據源,我可以通過索引查看;我的特殊使用案例是播放列表的隨機播放,我希望能夠回放到較早的歌曲,而無需存儲首先播放歌曲的順序。大多數RNG使用一個狀態進行工作,每個新的隨機數字都被生成,並且以前的狀態不容易檢索。基於隨機種子的散列函數輸出的隨機程度如何?
現在我有這個想法:使用種子,如果種子,並從它計算哈希代碼。在哈希碼中的位用完之後,增加種子,然後計算下一個哈希值。由於種子只能被可逆地修改,因此可以檢索較舊的散列碼並因此「隨機」位。
現在我的實際問題:從理論的角度來看,這是多麼隨意?對音樂播放列表來說並不重要,但我仍然對它感興趣。我也可以想象電腦遊戲應用的公平性會成爲問題。
顯然,沒有太多的熵涉及,但(密碼)散列函數應該有一個單一位的變化完全不同的輸出。我可以通過對種子進行一些其他的可逆操作來提高隨機性嗎?
http://security.stackexchange.com/上的人可能更能回答關於哈希的任何事情。但總的來說,良好的哈希被構造爲均等分佈,以便只是輸入中的小改動會產生非常不同的哈希。所以我想你可以說你沒事的只是增加一個。 – poke