如果我具有線性同餘發生器,使得給定的種子特異性每一次,我可以確切地知道,我們可以產生已知的僞隨機數的固定序列均勻分佈生成隨機矢量在[1,K]之間,我應該如何使用這樣一個RNG生成一個均勻分佈在[1,K^M]之間的M維隨機向量?從線性同餘RNG
從線性同餘RNG
回答
我不知道你打算使用或者什麼K的範圍是什麼編程語言和M是的,但如果K是2的冪,你可以簡單的後面附上M僞隨機數的二進制表示得到一個僞隨機數均勻分佈在[1,K^M]上。如果K不是2的冪,則可以使用某種分區函數,或重新滾動某些值來構造[1,K^M]分佈式數字的位。
問題是,如果它是一個線性同餘生成器,我們知道(種子,當前數)可以確定下一個僞隨機數是什麼,這樣我們將無法生成均勻分佈在[1, K^M],對嗎? –
是的,LCG的序列相關性會帶來問題。 sh1的答案探討了一些替代方案。 – MattG
如果你對LCG除了M維情況以外都滿意,那麼最基本的解決方案是將M個獨立的種子用於M個獨立的發生器。這至少可以確保給定向量的元素是獨立的(達到種子算法的極限)。
然而,你可能真的想要的是一個PRNG狀態至少M*log_2(K)
位,它可以保證向量的所有部分之間的一些混合。如果這超過了64位,那麼使用LCG來實現這一點似乎需要付出很多努力才能實現比許多更簡單的解決方案更弱的功能。
如果M是恆定的並且不是不合理的大,那麼你可以看看xorshift,multiply-carry-carry或者well。否則,你可能會堅持使用一個衆所周知的巨週期發生器或密碼算法,並對理論侷限性視而不見。
- 1. 線性同餘發生器Ç
- 2. 線程安全RNG Android NDK
- 3. 從結果中確定線性同餘發生器的狀態
- 4. 來自Boost.Random的多線程RNG
- 5. 非線性同餘求解器(模運算)
- 6. 線性同餘發生器的3D表示如何工作?
- 7. 線性同餘發生器的分析是錯誤的?
- 8. 算法找到一個equidistributed溶液到線性同餘系統
- 9. 使用線性同餘生成器來混淆行ID?
- 10. Javascript中的自定義線性同餘發生器
- 11. 一些解決非線性同餘方程
- 12. 如何計算的線性同餘發生器
- 13. Rng種破了?
- 14. 從不同的線程訪問屬性
- 15. RNG未知錯誤
- 16. 使用不同的RNG移動實現時隨機隨機性如何?
- 17. msvcrt.dll是否爲其rand()函數使用線性同餘生成器?
- 18. 可以將隨機(Int32).Next(minValue,maxValue)用作線性同餘發生器嗎?
- 19. 在std :: array中存儲rng的列表以實現多線程
- 20. 同餘性,相似性和直角三角形
- 21. 隱藏課堂上的RNG
- 22. c# - 計算 - RNG遊戲
- 23. 在VB.Net 2010中的RNG
- 24. RNG(隨機數發生器)
- 25. RNG隱藏字段參數
- 26. RNG崩潰C++程序
- 27. 硬件RNG - 如何使用?
- 28. 使用MSP430的RNG/PRNG
- 29. 冗餘__packed__屬性
- 30. C++ std :: mt19937和rng狀態保存/加載和可移植性
通過讓隨機向量在[1,K^M]之間均勻分佈是什麼意思?你的意思是每個條目在[1,K]中應該是統一的,並且在轉換成數字時的向量應該是統一的? – user2566092
@ user2566092:的確,這就是我想要的。 –