以一定概率生成随机数

时间:2016-11-10 20:24:03

标签: c++ random probability

我想在循环内的1到3之间的c ++中生成10个随机数,这样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;
}

1 个答案:

答案 0 :(得分:-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

的变化