0

我正在使用Mersenne twister 的这个实现来编写我正在编写的菱形正方形地形生成器。使用单独的实现而不是内置的 rand() 的要点是我希望每次都使用相同的种子生成相同的地图。Diamond-square 需要在每个像素上添加一个随机误差,所以我需要从一个种子中生成很多很多随机数。Mersenne twister 对此有好处,但据我所知,这个实现只生成一个随机数。我已将 mt_init() 中的 rand() 替换为整数参数。但是,我无法进一步说明代码的开头或结尾,所以我必须求助于您:我应该采取哪些步骤才能使 mt_random(n) 返回它所带出的 Mersenne twister 系列中的第 n 个随机数?

4

2 回答 2

3

如果您需要更多随机数,请继续调用任意mt_random次数。

于 2012-03-05T11:16:08.567 回答
1

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

unsigned int my_seed = 42;

int my_rand()
{
    srand(my_seed);
    return my_seed = rand();
}
于 2012-03-05T11:12:28.070 回答