【问题标题】:Generating random numbers with certain probability [duplicate]以一定概率生成随机数[重复]
【发布时间】:2017-03-24 23:59:11
【问题描述】:

我想在循环中生成 10 个 1 到 3 之间的 c++ 随机数,这样 1 出现的次数最多(比如 50% 次),然后是 2 个(30% 次),然后是 3 个(20% 次)。有可能这样做吗?

我已经编写了以下代码来获取 1 到 3 之间的随机数,但我将如何添加概率?

#include <iostream>
#include <windows.h>
#include "time.h"
int main(int argc, char*argv[])
{
    srand ( time(NULL) );
    for (int t = 0; t < 10; t++)
    {
        int random_x;

        random_x = rand() % 3+1;
        std::cout << "\nRandom X = " << random_x << std::endl;
    }
    Sleep(50000);
    return 0;
}

【问题讨论】:

  • 您可以查看内置发行版here

标签: c++ random probability


【解决方案1】:

你可以做这样的事情(在伪代码中)

x=random(0,100)
if(x<p1){
  y=1;
} else if (x<p2)
  y=2
} else{
  y=3
}

p1 是 1 的变化
p2-p1 是 2 的变化
而 100-p2 是 3 的变化

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 2016-01-06
    • 1970-01-01
    • 2017-04-10
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    相关资源
    最近更新 更多