gpt4 book ai didi

c++ - 以一定概率运行代码

转载 作者:行者123 更新时间:2023-11-30 21:16:14 26 4
gpt4 key购买 nike

我是 C/C++ 新手。我试图让代码以一定的概率运行。

例如,我知道下面的代码可以使其以 1/2 的概率运行:

if (rand() % 2) {
// runs 1/2 the time
}

但我不知道让它运行 1/4 (25%) 时间的最佳方法。当我输入:

if (rand() % 4) {
// runs 1/4 the time
}

它的运行次数远远超过四分之一。我也尝试过:

if (rand() % 2) {
// 1/2
if (rand() % 2) {
// 1/2 * 1/2 = 1/4
}
}

这可行,但似乎不是最好的方法。另外,该方法仅适用于 1/4、1/8、1/16 等。我不知道如何执行 1/6 这样的示例。

最佳答案

您应该将 == 0 放入 if 语句中。

if (rand() % 4 == 0) {
// runs 1/4 the time
}

rand() 返回一个正整数,该整数可能非常大。模运算符 % 执行除法并给出余数。例如,如果您取一个大数除以 4,则余数必须是 0、1、2 或 3。不能是其他任何值。通过检查余数是否等于 0,我们选择了四种可能情况之一。这意味着 25% 的可能性。

您的原始代码运行过于频繁的原因是 if 语句中的 rand() % 4 将除 0 之外的所有内容都视为 true。因此,如果余数为 1、2 或 3,则条件成立。换句话说,您的代码有 3/4 的时间在运行。

关于c++ - 以一定概率运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191313/

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