我不确定为什么这两个代码块给出不同的输出:
unsigned int seed1 = 0;
char state1[256];
initstate(seed1, state1, 256);
printf("%10ld\n", random());
printf("%10ld\n", random());
// Gives:
// 1216130483
// 1950449197
Run Code Online (Sandbox Code Playgroud)
与
unsigned int seed1 = 0;
char state1[256];
initstate(seed1, state1, 256);
printf("%10ld\n", random());
setstate(state1);
printf("%10ld\n", random());
// Gives:
// 1216130483
// 625602885
Run Code Online (Sandbox Code Playgroud)
我误解了setstate()的作用吗?
编辑:有趣的是,看看它给出了什么:
unsigned int seed1 = 0;
char state1[256];
initstate(seed1, state1, 256);
printf("%10ld\n", random());
setstate(state1);
setstate(state1);
printf("%10ld\n", random());
// Gives:
// 1216130483
// 1950449197
Run Code Online (Sandbox Code Playgroud)
我想对 的调用initstate()也不会切换到该状态,但对 的调用会setstate()切换到该状态,这就是为什么后一个random()调用返回从新状态生成的数字的原因。
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |