2016-11-10 9 views
1

1が最も多く(例えば50%)、次に2(30%が)、3が(1)となるように、ループ内で1から3までの10個の乱数を生成したい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