我正在努力学习如何使用rand_r,在阅读完这个问题之后我仍然有点困惑,有人可以看看并指出我缺少的东西吗?据我所知,rand_r接受一个指向某个值的指针(或一个具有一些初始值的内存),并在每次调用时使用它来生成新数字.每个调用rand_r的线程都应该为它提供一个唯一的指针(或一块内存),以获得不同线程之间的"实际随机"数字.这就是为什么这个:
int globalSeed;
//thread 1
rand_r(&globalSeed);
//thread 2
rand_r(&globalSeed);
Run Code Online (Sandbox Code Playgroud)
是错误的使用方式.如果我有
int seed1,seed2;
//thread 1
rand_r(&seed1);
//thread 2
rand_r(&seed2);
Run Code Online (Sandbox Code Playgroud)
这是在线程之间生成"真随机"数字的正确方法吗?
编辑:阅读上述部分的答案后的其他问题:
(rand_r(&seed1) % (n-1)) + 1怎么办
?或者还有其他常见的方法吗?