【发布时间】:2012-03-22 20:36:30
【问题描述】:
我正在使用 this 实现 Mersenne twister 来编写我正在编写的菱形正方形地形生成器。使用单独的实现而不是内置的 rand() 的要点是我希望每次都使用相同的种子生成相同的地图。 Diamond-square 需要在每个像素上添加一个随机误差,所以我需要从一个种子中生成很多很多随机数。 Mersenne twister 对此有好处,但据我所知,这个实现只生成一个随机数。我已将 mt_init() 中的 rand() 替换为整数参数。但是,我无法进一步说明代码的开头或结尾,所以我必须求助于您:我应该采取哪些步骤才能使 mt_random(n) 返回它所带出的 Mersenne twister 系列中的第 n 个随机数?
【问题讨论】:
-
我认为您没有正确使用代码。 PRNG 通常在每次调用时返回 next 值,即参数(如果存在用于 scaling)。
-
为什么不直接使用
srand和rand来设置种子并以这种方式获得可重复的伪随机序列? -
@Paul R:也许 OP 希望序列在不同的 C 实现中可重复。
-
@caf: 好点 - 这很有意义
标签: c random implementation mersenne-twister