简体   繁体   English

需要帮助转换C Mersenne扭曲器实现对我有用

[英]Need help converting C Mersenne twister implementation to be useful to me

I am using this implementation of the Mersenne twister for a diamond-square terrain generator I am writing. 我正在使用Mersenne扭曲器的这种实现方式编写我正在编写的菱形正方形地形生成器。 The point of using a separate implementation rather than the built in rand() is that I want the same seed to generate the same map every time. 使用单独的实现而不是内置的rand()的目的在于,我希望每次使用相同的种子生成相同的映射。 Diamond-square requires a random error to be added on to every pixel, so I need to generate many, many random numbers from a single seed. 菱形平方要求将随机误差添加到每个像素,因此我需要从单个种子生成许多随机数。 Mersenne twister would be good for this, but as far as I can tell, this implementation generates only one random number. Mersenne扭曲器将对此有所帮助,但据我所知,此实现仅生成一个随机数。 I have replaced the rand() in mt_init() with an integer argument. 我已经用整数参数替换了mt_init()中的rand()。 I can make no further head or tail of the code, however, so I must turn to you to ask: what steps should I take so that mt_random(n) returns the nth random number in the Mersenne twister series it belts out? 但是,我无法再写任何代码的开头或结尾,因此,我必须向您询问:应该采取什么步骤,以便mt_random(n)返回梅森捻线机系列中的第n个随机数?

如果您需要更多随机数,则只需不断调用mt_random

I would reconsider using rand and srand . 我会重新考虑使用randsrand If you want a separate random function whose state isn't affected by normal calls to rand , you can use something like this. 如果您想要一个单独的随机函数,其状态不受rand的正常调用的影响,则可以使用类似这样的函数。

unsigned int my_seed = 42;

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM