2013-07-15 5 views
1

C++에서 난수를 생성합니다. 11. 코드를 실행할 때난수 생성을 범위를 사용하여 범위로 제한 <random>

using namespace std; 

static std::mt19937_64 rng; 

int main() { 
rng.seed(11); 

    std::cout << rng() << std::endl; 
} 

난수를 반환합니다. 그러나 이것을 1-1000과 같이 숫자의 범위로 제한하고 싶습니다. C++ 11에 새로 추가 된 <random> 파일/라이브러리를 사용하면 어떻게 될까요?

+3

mod 연산자 '%' – andre

+7

균등하게 분포 시키려면 http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution을 사용하십시오. – chris

+6

@andre 아니, 모듈러스 연산자는 숫자의 균일 한 분포를 생성하지 않습니다, 그것을 확인하십시오 : http://www.cplusplus.com/reference/cstdlib/rand/ –

답변

17

std::uniform_int_distribution<random>에서 사용하십시오.

예 :

#include <random> 
#include <iostream> 

int main() 
{ 
    std::random_device rd; 
    std::mt19937 gen(rd()); 
    std::uniform_int_distribution<int> dis(1, 1000); 

    std::cout << dis(gen) << '\n'; 
} 

<random> 헤더는 당신이 사용할 수있는 다른 배포판을 많이 포함되어 있습니다. 그것을 확인할 수 있습니다 here

+1

+1은 다른 의견 유형에 쉽게 적응할 수 있도록 제 의견에 반영된 사고 프로세스와는 다릅니다. – chris

+0

와우, 코드와 모든 것에 감사드립니다! – hichris123

+0

또한이 난수를 변수로 저장하는 방법은 무엇입니까? – hichris123

관련 문제