Unrand 시스템에서 srandom() 및 random()을 사용하여 c에서 임의의 숫자를 생성하고 있습니다. 여러 개의 RNG를 갖고 싶습니다. 동일한 시드가 주어지면 각 시퀀스는 동일한 시퀀스를 출력해야합니다. 나는 또한 각각의 상태를 저장하고 복원하고 싶다. 다음은 의사 코드 예제입니다.c/Unix의 다중 난수 생성기 상태
R1 = new_rng(5); //5 is the seed
R2 = new rng(5); //5 is the seed here, too.
a = R1.random();
b = R1.random();
d = R2.random(); //a == d
s1 = R2.get_state(); //save the state of R2
e = R2.random(); //b == e
R2.set_state(s1); //restore the state of R2
f = R2.random(); //b == f
어떻게하면됩니까? 때로는 RNG가 다른 스레드로 분기 할 것이므로 새로운 스레드를 생성 할 때 RNG의 상태를 복제해야합니다.
음, "추한"솔루션은 시드를 저장하고 무작위로 여러 번 호출 한 클래스를 만들어서 상태를 복원하는 것입니다. 물론, 많은 숫자를 사용하면 속도가 느려질 것입니다. –