본문 바로가기

난수3

Int 난수 함수로 Float 난수 깔끔하게 발생시키기 php 에는 float 난수를 발생시키는 함수가 따로 없다. 그래서 int 난수 함수인 rand() 함수를 이용해 float로 변환해야 한다. 다음은 float 변수형의 최소, 최댓값을 인수로 받아 float 난수를 반환하는 함수이다. 자주 사용할것 같아 만들어 보았다. function randOnFloat($min, $max) { //최소,최대값중에 소수점 자리수가 더 큰쪽을 선택 $radix_min = radix($min); $radix_max = radix($max); $radix = $radix_min[front] > $radix_max[front] ? $radix_min : $radix_max; //입력된 float값을 int값으로 변환후 int난수를 발생시키고 다시 float로 변환한다 ret.. 2019. 12. 26.
삼각 분포로 난수 발생시키기 가우시안 분포 즉, 정규분포로 난수를 발생시켜야 하는 경우가 종종 있다. 하지만 우리가 흔히 사용하는 rand() 함수는 균일 분포로 난수를 가져오므로 따로 구현해야 한다. 다행히 정규분포 난수 발생 소스는 인터넷상에서 쉽게 구할수 있기 때문에 별 문제 될 건 없다. 한 가지 딴지를 걸자면 정규분포는 피 적분이 안되기 때문에 반복문을 사용해 난수를 만들어야 한다. 만약, 아주 많은 난수를 한꺼번에 발생시킨다면, 부하가 걸릴 수 있다는 말이다. 물론, 아주 쓸데없는 걱정이다. 그정도로 21세기의 컴퓨터는 나약하지 않다ㅎㅎ 어쨌거나 반복문이 없는 확률 밀도 기반 난수를 쓰고 싶다는 어리석은 생각에 다음과 같은 삼각 분포 난수 함수를 만들어 보았다. 삼각형 그래프는 정적분이 쉬워서 면적을 비율 삼아 난수를 발.. 2019. 10. 28.
게임에 꼭 필요한 난수, 간단하게 확률대로 발생시키기 게임을 만들때 수없이 사용되는 난수.. 이런 난수는 보통 오브젝트의 위치나 종류를 결정할때 사용된다. 예를 들어서 장애물이 임의의 위치에 나타나거나 보상아이템이 랜덤하게 나오는 경우이다. 하지만 이때에는 무작정 랜덤하게 나오는 것보다 장애물이 특정 위치에 더 자주 나온다던지, 보상아이템중 더 좋은 아이템은 적은 확률로 나온다던지 하고 싶을 경우가 있을것이다. 그래서 여기서는 난수를 확률대로 나오게 하는 간단한 나만의 방법을 소개하고자 한다. public class Rate { public int mTable[]; //확률 설정 public void set(int rate[]) { int table[] = new int[100]; //각각의 숫자들의 확률을 담을 테이블배열 int value = 0; //테.. 2014. 9. 14.