gpt4 book ai didi

c - 如何使用 rand_r 生成 -1 到 1 之间的随机数

转载 作者:行者123 更新时间:2023-11-30 20:21:19 28 4
gpt4 key购买 nike

我需要有关如何使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com