gpt4 book ai didi

c++ - 改变获得随机数的概率

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:08 26 4
gpt4 key购买 nike

我想生成一个介于 0 和 3 之间的随机数,我的代码中有以下内容:

int random = rand() % 4;

这工作正常,但我希望它大部分时间生成 1、2 和 3,而只是偶尔生成 0。

解决此问题的最佳方法是什么?解决此问题的常用算法名称是什么?

最佳答案

这是一种方法。假设您希望 0、1、2、3 的分布为 5%、20%、30%、45%。
你可以这样做:

double val = (double)rand() / RAND_MAX;

int random;
if (val < 0.05) // 5%
random = 0;
else if (val < 0.25) // 5% + 20%
random = 1;
else if (val < 0.55) // 5% + 20% + 30%
random = 2;
else
random = 3;

当然不一定要用 float 来完成。我就是这样做的,因为它更直观。

关于c++ - 改变获得随机数的概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8529665/

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