실수 A에서 B사이의 아무 값을 랜덤으로 도출해내려고 하는데
A에서 B까지 갈수록 뽑힐 확률이 점점 올라가게 만들고 싶음
그런데 어떻게 코드를 짜야 할지 도통 모르겠음...
그냥 Random.Range 쓰면 뽑힐 확률이 전부 똑같아져버리니까 안되고
어떻게 식을 짜야할것 같은데 어떻게 짜야할지 감이 안옴...
실수 A에서 B사이의 아무 값을 랜덤으로 도출해내려고 하는데
A에서 B까지 갈수록 뽑힐 확률이 점점 올라가게 만들고 싶음
그런데 어떻게 코드를 짜야 할지 도통 모르겠음...
그냥 Random.Range 쓰면 뽑힐 확률이 전부 똑같아져버리니까 안되고
어떻게 식을 짜야할것 같은데 어떻게 짜야할지 감이 안옴...
inverse cdf 라는 방식을 사용하면 된다. pdf(확률 밀도 함수)가 있으면 적분해서 cdf(누적 밀도 함수)를 구할 수 있는데 이 함수의 역을 취하고 0~1사이 uniform random 값을 넣어주고 그 결과를 취하면 됨. <아주 간단한 예> 도메인은 0 ~ 1 이라하고 이것의 pdf가 p = 2x, 라고 했을 때 (선형적으로 확률 점점증가) 이것을 적분해서 cdf를 구하면 P = x^2, 이것의 역함수는 x = sqrt(P) -> 정리하면 0~1사이 값을 random 함수(일반적으로 uniform 함(같은 확률))로 뽑은 다음에 그것의 제곱근을 취하면 됨.
크흑 감사합니다 센세...
ㄷㄷ쩐다... 나는 그냥 리스트에 숫자 개수 다르게 집어넣는것만 생각했는데...
(랜덤값 + 1) * 랜덤값 예) (0.1 + 1) * 0.1 = 0.101 (0.9 + 1) * 0.9 = 0.981