2016-11-10 2 views
1

1이 가장 많은 시간 (예 : 50 %), 2 (30 % 시간), 3 (1 ~ 3) 번 반복되도록 C + 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)을 할 수있는 2
100-P2에 대한 변경 한
P2-P1에 대한 변경되고있는 변화 for 3