본문 바로가기

Programming/C/C++/CS

[0,n) 사이의 부동소수점 수 난수 구하기

일반적으로 0 과 n 사이의 난수를 구하는 공식으로  rand() 함수를 이용 하여

rand() % n; 을 주로 이용 한다.

그런데 이 때 구해지는 수는 정수 일 수 밖에 없다. % 는 나머지를 구하는 식이기 때문이다. 

그런데 float형이나 double형의 부동 소수점이 필요한 경우가 많이 있다. 

이럴 경우는 (double)rand() * (double)n / ((double)(RAND_MAX)+(double)(1)) 을 하면 된다.

이 때 RAND_MAX 값은 stdlib.h에 정의 되어 있는 값으로 rand() 함수에 의해 반환 될 수 있는 값의 최대 값이다.