0
我试图寻找关于如何使用mt19937ar.c变种梅森难题的例子,但大多数想出在C++和others seem to use mtwist.h
。梅森倍捻机(mt19937ar.c)没有返回随机数
我下面的代码:
int getRandomNum(void)
{
int i;
i = (int) genrand_int32();
return i;
}
int main(int argc, char **argv)
{
...
int m = getRandomNum();
printf("m = %d", m);
...
return 0;
}
只是一遍又一遍吐出相同的整数。看起来像一个播种问题,但我发现每个实现获得一个随机数mt19937
只是简单地调用genrand_int32()
。我做错了吗?
谢谢!这有帮助。 – 8protons
你的第一句话并不是真的有效,如果没有明确给出种子,它可能会播种rng。没有魔法是必需的...... – Apollys
@Apollys正如我在回答中所解释的,OP所使用的实现默认为5489的种子。它是一个非常旧的可移植实现,所以它不能使用'time()'之类的函数。 (它们不在所有平台上存在!) – duskwuff