- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要有关如何使用 rand_r() 生成 -1 到 1 之间的随机数的帮助。我在网上寻找如何做到这一点的示例并没有太多运气。任何帮助将不胜感激。
最佳答案
每次调用rand_r
时,都会将状态变量的地址传递给它。在第一次调用rand_r
之前,应该为该状态变量分配一个种子值。您还需要为每个线程保留一个单独的状态变量,以便它们每个都有自己的状态。
unsigned int myseed = time(NULL) ^ getpid() ^ pthread_self();
...
int rand1 = rand_r(&myseed);
...
int rand2 = rand_r(&myseed);
要获取 -1 到 1 之间的值,请首先将给定随机值(转换为 double
)除以 RAND_MAX
。这将为您提供 0 到 1 之间的值。然后乘以数字范围(即 1 - (-1) = 2)并添加下限 (-1):
double rand = ((double)rand_r(&myseed) / RAND_MAX) * 2 - 1;
关于c - 如何使用 rand_r 生成 -1 到 1 之间的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024360/
嗯,rand_r 函数应该是一个线程安全函数。然而,通过它的实现,我不敢相信它可以使自己不被其他线程改变。假设两个线程将使用相同的变量种子同时调用 rand_r。所以会发生读写竞争。下面列出了 gli
所以,我很好奇如何有人可以使用 rand_r 命令跨多个线程获取随机值。如果我对种子使用时间(NULL),那么每个人都会得到相同的种子,因为线程创建得非常接近。这些操作都基于该随机种子,因此所有线程对
我在使用 rand_r 时遇到了问题。我有一个生成数百万个随机数的模拟。我注意到,在某个时间点,这些数字不再统一。可能是什么问题? 我做什么:我创建了一个生成器的实例并给它自己的种子。 mainRGe
我正在尝试学习如何使用 rand_r,在阅读了 this question 之后我仍然有点困惑,有人可以看看并指出我错过了什么吗?据我了解, rand_r 需要一个指向某个值(或具有某些初始值的内存)
当我在 vs2008 中使用 rand_r() 时,出现 1 个错误--Identifier is undefined,我可以改用 rand() 吗? (多线程编程工作。)谢谢。 最佳答案 你必须 #
我正在尝试在 C++ 中获取一个随机数,并且我正在使用 rand()。这就是 cpplint说: Consider using rand_r(...) instead of rand(...) for
我被要求不要使用 rand(),因为它们不是“线程安全的”,并且每次也使用不同的种子值。我在 GitHub 上找到了使用如下种子值的示例: unsigned int seed = time(NULL)
我想改变 rand_r 方法对 srand/rand 的使用或与其他带种子的随机生成器一起使用。 在代码中有一个循环调用带有种子的train方法。 int nseeds = 5; for (int s
我想知道为什么在包含 cstdlib 时我不能使用 std::rand_r?或者,更一般地说,为什么 cstdlib 中的某些函数在全局命名空间中,但不在 std 命名空间中? 最佳答案 rand_r
所以我有多个线程将使用 rand_r 函数。这个函数的签名是: int rand_r(int *val); 我试图利用这段时间为这个函数做种子,但我遇到了各种各样的麻烦。任何人都可以向我解释我将如何使
std::random_shuffle 线程安全吗?我认为不是,因为常规的 rand() 不是线程安全的。如果是这种情况,我将如何将 rand_r 与 random_shuffle 一起使用,以便我可
我需要有关如何使用 rand_r() 生成 -1 到 1 之间的随机数的帮助。我在网上寻找如何做到这一点的示例并没有太多运气。任何帮助将不胜感激。 最佳答案 每次调用rand_r时,都会将状态变量的地
我想了解并行随机数生成的正确用法。在查阅了不同的资源后,我写了一个看起来可以工作的简单代码,但如果有人能证实我的理解,那就太好了。 为了指出rand()和rand_r()的区别和关系,我们来求解: P
以下代码使用 1 个线程比使用 2 个线程执行得更好(不过,使用 4 个线程可以提高速度): #include #include #include int main(int argc, char
我正在尝试将一些代码从 linux 移植到 cygwin 下的 windows。我发现这个奇怪的错误,其中“rand_r 未在此范围内声明”。我将 gcc 4.8.1 用作 x86_64-w64-mi
我正在创建许多线程,每个线程都应该输出一个随机数。 我知道 srand() 和 rand 不是线程安全的,事实上所有的输出数字都是相同的。 所以我尝试使用 rand_r 但我在 Windows 终端上
我是一名优秀的程序员,十分优秀!