我試圖將一些代碼從UNIX移植到Windows,並且我需要實現POSIX srandom(x)
和random()
函數,對於給定的種子x
,生成與符合POSIX.1相同的數字序列, 2001年。 Windows上有哪些可用的選項?與Windows相當的POSIX srandom(...)和random()函數?
3
A
回答
5
srandom
和家人是glibc的成員。您可以將the source code from glibc srandom/random複製到您的應用程序中,只要它與許可證兼容即可。如果您正在尋找另一種實現方式,請注意,POSIX實際上是接口一致性,而不是實現一致性 - 它實際上沒有說明生成它的機制是什麼,也不是實際產生的數字應該。
如果您希望在多個平臺上保證相同的數字序列,那麼您不應該依賴任何隨機數生成器的標準庫實現,您應該自己製作或循環使用已知的實現。
爲在JWWalker的評論中提到,有一個相當不錯的boost random implementation,它提供了一套很好
C++
類的隨機數,但是這C++
,不C
- 不同的語言,所以可能不能直接適用。
1
+0
'rand_s'不使用'srand'設置的種子,'rand'返回一個15位隨機數,與'random'返回的31位隨機數不同。 – JWWalker 2016-06-08 18:57:50
0
如果你正在尋找一些簡單的僞隨機數發生器可以用線性同餘發生器http://en.wikipedia.org/wiki/Linear_congruential_generator
如。第一個例子:
unsigned int seed = 2;
unsigned int rand()
{
seed = 1664525 * seed + 1013904223;
return x;
}
void srand(unsigned int new_seed)
{
seed = new_seed;
}
相關問題
- 1. POSIX回調函數和NSAutoreleasePool與ARC
- 2. 如何連接函數,createElement和random?
- 3. 的Posix相當於LocalAlloc的(LMEM_ZEROINIT,大小)
- 4. 是否有與eventfd相當的Windows?
- 5. PostgreSQL的random()函數的質量?
- 6. 爲什麼srandom(time(NULL))在main()函數和用戶定義的函數中表現不同?
- 7. POSIX可重入函數
- 8. 使正常的monadic函數與單相變壓器相當
- 9. 相當於用於在Windows下捕獲「CTRL + C」的「SIGINT」(posix)信號/ MinGW
- 10. 當我使用Random()函數時程序崩潰
- 11. PHP pthread與POSIX線程相同嗎?
- 12. Boost Random和OpenMP
- 13. 在Windows上模擬/ dev/random
- 14. Windows等效於/ dev/random
- 15. DISTINCT與RANDOM()排序
- 16. 與函數和遞歸相關
- 17. AF_UNIX相當於Windows
- 18. 構造函數Random()不可見
- 19. .net相當於Javascript函數
- 20. D相當於XMLHttpRequest函數
- 21. C#相當於requests.post()函數
- 22. C++相當於VLOOKUP函數
- 23. 這迫使我的程序退出的Posix evtsuspend相當於
- 24. erand48 windows相當於
- 25. d3.js用異步函數替換random()數據函數
- 26. 兩數相加與函數
- 27. 是否有與Windows InetIsOffline函數相同的Linux?
- 28. Python Random Random
- 29. 是否有與MATLAB的conv2函數相當的Python?
- 30. 是否有與.net中的Javascript函數.closest()相當的功能?
對於開源隨機數生成器,請參見[隨機庫Boost](http://www.boost.org/doc/libs/1_61_0/doc/html/boost_random/reference.html)。 – JWWalker 2016-06-08 19:19:57
鏈接已死亡。我有一個需要編譯的文件,我應該怎麼做來替換srandom? – 2017-01-10 02:27:55
@TomášZato我已經更新了鏈接,指向glibc random.c的sourceware鏈接,它應該爲可預見的將來保持活力。它是glibc代碼,並且有與其關聯的許可證,可能會使其不適合使用。 – Petesh 2017-01-10 08:45:36