需要帮助转换C Mersenne twister实现对我有用

时间:2012-03-05 11:03:58

标签: c random implementation mersenne-twister

我正在使用梅森捻线机的this实施我正在编写的钻石方形地形发生器。使用单独的实现而不是内置的rand()的意义在于我希望每次都使用相同的种子生成相同的地图。菱形方块需要在每个像素上添加随机误差,因此我需要从单个种子生成许多很多随机数。 Mersenne twister对此有好处,但据我所知,这个实现只产生一个随机数。我用mt_init()替换了整数参数中的rand()。但是,我不能再对代码进行进一步的改进,所以我必须转向你问:我应该采取什么步骤让mt_random(n)返回Mersenne twister系列中的第n个随机数呢?

2 个答案:

答案 0 :(得分:3)

如果您需要更多随机数,请随时拨打mt_random

答案 1 :(得分:1)

我会重新考虑使用randsrand。如果你想要一个单独的随机函数,其状态不受rand的正常调用的影响,你可以使用这样的东西。

unsigned int my_seed = 42;

int my_rand()
{
    srand(my_seed);
    return my_seed = rand();
}