0
GSL에는 많은 랜덤 생성기가 있습니다. 예를 들어, 최대 등거리 분산 Tausworthe 생성기의 구현은 gsl/taus.c에 위치합니다. 랜덤 씨앗은 다음 함수에서 설정 : 그들은 여섯 "워밍업"필요 왜난수 발생기에서 워밍업의 역할은 무엇입니까?
static inline unsigned long
taus_get (void *vstate)
{
taus_state_t *state = (taus_state_t *) vstate;
#define MASK 0xffffffffUL
#define TAUSWORTHE(s,a,b,c,d) (((s &c) <<d) &MASK)^((((s <<a) &MASK)^s) >>b)
state->s1 = TAUSWORTHE (state->s1, 13, 19, 4294967294UL, 12);
state->s2 = TAUSWORTHE (state->s2, 2, 25, 4294967288UL, 4);
state->s3 = TAUSWORTHE (state->s3, 3, 11, 4294967280UL, 17);
return (state->s1^state->s2^state->s3);
}
static void
taus_set (void *vstate, unsigned long int s)
{
taus_state_t *state = (taus_state_t *) vstate;
if (s == 0)
s = 1; /* default seed is 1 */
#define LCG(n) ((69069 * n) & 0xffffffffUL)
state->s1 = LCG (s);
state->s2 = LCG (state->s1);
state->s3 = LCG (state->s2);
/* "warm it up" */
taus_get (state);
taus_get (state);
taus_get (state);
taus_get (state);
taus_get (state);
taus_get (state);
return;
}
내 질문은? 워밍업이 없다면 어떤 문제가 있습니까?
이 신문은 매우 감사합니다. –