在C中生成两个独立播种的随机数列表

时间:2013-04-20 23:56:25

标签: c random

我的程序有两个不同的函数,它们都调用随机数。我希望能够独立播种每个函数调用的随机数,这样我就可以多次运行完整程序,为一个函数调用相同的随机数,并更改另一个函数调用的随机数。任何见解?

3 个答案:

答案 0 :(得分:2)

POSIX提供drand48()系列函数;您可以使用其中一些来达到您所需的效果:

  • double erand48(unsigned short xsubi[3]);
  • long jrand48(unsigned short xsubi[3]);
  • long nrand48(unsigned short xsubi[3]);

答案 1 :(得分:0)

你可以用一些常数播种第一个,用当前时间播种第二个

答案 2 :(得分:0)

在面向对象语言中,您将创建两个独立的随机数生成器对象并分别调用它们。在C中,你必须自己做这项工作。获取一些代码,例如Mersenne Twister或我的onejoker,并修改它以获取多个状态变量。例如,我的代码中的JKISS prng将其内部状态保持在四个变量x,y,z和c中。将它们更改为数组或结构数组,并保留多个集合。然后独立种子。因此,如果代码中当前存在“x”,则将其更改为“x [i]”,其中i是流的编号。既然你提到了它,对我来说这可能不是一个坏主意...... :)