我想要某種方法來創建一個相當長的隨機數序列,可以前后翻轉。就像帶有“下一個”和“上一個”按鈕的機器一樣,這將為您提供隨機數。諸如10位分辨率(即,從0到1023的正整數)之類的東西就足夠了,并且序列號大于100k。這是一個簡單的游戲類型應用程序,不需要加密強度隨機性或其他任何東西,但我希望它具有相當的隨機性。我的可用內存有限,因此我不能只生成大量隨機數據并進行處理。我需要在“互動時間”中獲得數字-我可以輕松地花幾毫秒來考慮下一個數字,但舒適度遠不止于此。最終它將在某種微控制器上運行,可能只是一個Arduino。我可以使用簡單的線性同余生成器(LCG)來實現。前進很簡單,要前進,我必須緩存最新的數字并間隔存儲一些點,以便我可以從那里重新創建序列。但是也許有一些偽隨機生成器可以讓您向前和向后前進?應該有可能將兩個線性反饋移位寄存器(LFSR)連接起來,以朝不同的方向滾動,不是嗎?或者,也許我可以使用某種哈希函數來使索引號變亂呢?我將首先嘗試。還有其他想法嗎?
3 回答

嚕嚕噠
TA貢獻1784條經驗 獲得超7個贊
只需按遞增的整數順序反轉位的順序即可。例如(8位分辨率):
0 <=> 0
1 <=> 128
2 <=> 64
3 <=> 192
4 <=> 32
等等
在序列中前進和后退非常容易,并且比調用加密或哈希函數要快得多。它還具有產生最長可能序列的好處。
絕對不是加密安全的。這是生成值的散點圖(同樣具有8位分辨率):
“隨機”生成值的散點圖
盡管可能足夠“隨機”,但您可以輕松看到模式。
添加回答
舉報
0/150
提交
取消