기존의 rand함수와 %연산으로 범쉬를 설정해 난수를 설정 했었으나,

c++11에 관련 기능이 있으니 써보기로 했다.

 

#include <random>
#include <iostream>

int Util::Random(int min, int includ_max)
{
    random_device rn;
    mt19937_64 rnd( rn() );
 
    
    uniform_int_distribution<> range(min, includ_max);
 
    
    return range( rnd );
}

 

uniform_int_distribution를 통해 min,max 범위를 설정하고, 값을 리턴하면 끝이다. 간단하다. 여기서 유의해야 할 점은 min, max값이 제외가 아니라 포함이다.

 

int r = Util::Random(-5,10)

//r [-5 ~ 10] 사이의 정수 반환

 

 

https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution

 

std::uniform_int_distribution - cppreference.com

template< class IntType = int > class uniform_int_distribution; (since C++11) Produces random integer values i, uniformly distributed on the closed interval [a, b], that is, distributed according to the discrete probability function P(i|a,b) = . std::unifo

en.cppreference.com

 

'게임을 만들자 > C++' 카테고리의 다른 글

c++11 min, max 범위, 난수 생성  (1) 2020.04.07
c++ string tokenizer  (0) 2015.01.09
cJSON parsing error using window utf-8 txt file, Remove UTF-8 BOM  (0) 2015.01.08
c++ Easing code  (0) 2014.10.16
c++ Builder 패턴  (0) 2014.04.16
c++ const  (0) 2014.04.15
이세계 용병 온라인

댓글을 달아 주세요

  1. 비밀댓글입니다