例如:
如果rprng(seed,index)
是我的功能,那么对于任何一对(seed,index)
,我应该始终为给定的(seed,index)
获得相同的值。
例如:
rprng(4,2) = 17
rprng(4,5) = 21
rprng(4,2) = 17
答案 0 :(得分:2)
一个简单的想法是使用一个非常彻底的PRNG,seed
,seed+1
,seed+2
...生成的值是可接受的。 E.g:
#include <random>
unsigned prng(unsigned seed, unsigned index)
{
thread_local std::mt19937 engine; // or a different engine
engine.seed(seed + index);
return engine();
}
答案 1 :(得分:1)
使用srand(seed),后面的myval = rand()的所有用法都是伪随机的。我经常使用这种方法,因为它是从任何给定种子获取相同值的最简单方法。
答案 2 :(得分:0)
int rprng(int seed, int index){
srand(seed);
while(index-- >0)
rand();
return rand();
}