gpt4 book ai didi

c++ - 基于概率的真或假

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:35 26 4
gpt4 key购买 nike

我对运算符和随机生成的使用有点困惑。我想我只是想问一下这段代码是否按照我的意愿执行?

生成一个“随机”TRUEFALSE 取决于我分配函数的概率。

bool randtf(int probability) {
if ((rand() % 100) < probability)
return true;
else
return false;
}

所以如果 randtf(63) 它有 63% 的机会TRUE

任何指导将不胜感激。谢谢。

最佳答案

是的,初步近似。

不,更准确地说。 rand()返回 0 之间的数字和 RAND_MAX ,在实践中总是采用 (1 << n) - 1 的形式.这不是 100 的倍数,因此在取模时不会得到完全均匀的分布。

您可以通过使用拒绝抽样来解决这个问题。为了争论,我们假设 RAND_MAX == 32767 (即 16 位)。第一步是继续生成随机数,拒绝它们,直到获得小于 32700 的随机数(小于 RAND_MAX 的 100 的最大倍数)。如果您随后对其进行取模技巧,您将获得均匀分布。

当然,这假设 rand() 的实现是理智的、统计上稳健的,这完全是一个假设!

关于c++ - 基于概率的真或假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7910273/

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