2016-11-10 118 views
1

我想要在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

您可以查看内置发行版[此处](http://en.cppreference.com/w/cpp/numeric/random) – NathanOliver

回答

-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的变化是改变for 3