Windows相当于POSIX srandom(…)和random()函数?

我试图将一些代码从UNIX移植到Windows,我需要一个POSIX srandom(x)random()函数的实现,对于给定的种子x ,生成与符合POSIX .1-2001。 Windows上有哪些可用的选项?

srandom和家庭是glibc的成员。 只要是兼容的许可证,您可以将源代码从 sibm / random的glibc复制到您的应用程序中。 如果你正在寻找另一个实现,任何小amou

请记住,POSIX实际上是接口一致性,而不是实现一致性 – 它实际上没有说明生成它的机制是什么,也不是实际产生的数字。

如果您希望保证跨多个平台的序列号相同,那么您不应该依赖任何随机数生成器的标准库实现,您应该自己制作,或者回收一个已知的实现。

正如JWWalker在评论中提到的那样,有一个相当不错的提升随机实现 ,它为随机数提供了一组很好的C++类,但这是C++ ,而不是C语言,因此可能不是直接适用的。

您可以在Windows中检查rand_s和srand函数。 但是,我不确定它们是否符合POSIX标准。

编辑

一个更好的似乎是CryptGenRandom 。 查看这个链接的细节。

如果你正在寻找一些简单的伪随机生成器,你可以使用线性同余生成器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; }