Math.random()에 관해서

19.08.23 15:52 작성 조회수 232

0

안녕하세요^^ 오늘도 강의 감사히 듣고 있습니다.

강의에서 Math.random()은 진짜 랜덤이 아니라고 하셔서 인터넷을 검색해보니

Math.random()은 0과1사이의 uniform distribution을 따르기 때문에 Math.ceil(Math.random()*100)을 했을때 2자리 수가 한자릿수에 비해 더 나올확률이 높아진다는것을 알게 되었습니다.

(이 사이트를 통해서 알았습니다.

https://stackoverflow.com/questions/1062902/how-random-is-javascripts-math-random)

 

그래서 제가 스케일을 100,1000, 조정해봤을때 그 비율이 실제와같은지 한번 체크해보려고 코드를 짜봤는데요. 제 코드에서는 숫자별로 비율이 비슷하게 나와서 제가 코드를 잘못짠건지 혹은 다른부분이 이상한지 잘모르겠어서 여쭤봅니다. 항상 강의 감사히 듣고있습니다.

아래는 제 코드이고 시행횟수와, 최대숫자를 조정할수 있습니다.

감사합니다.

var 시행횟수 = 99999;
var 최대숫자 = 1000;
var 랜덤군 = [];


for(i=0;i<시행횟수;i+=1){ //랜덤군에 랜덤넘버 하나씩 채워넣기
랜덤군.push(Math.ceil(Math.random()*최대숫자));
}
console.log(랜덤군);


var count = [];
var 확률 = [];

for(j=1;j<최대숫자;j+=1){// 채워넣었던 숫자를 하나씩 카운트하고 시행횟수로 나눠 확률알아보기
count[j-1]=0;
for(var i = 0; i < 랜덤군.length; ++i){
if(랜덤군[i] == j)
count[j-1]+=1;
확률[j-1]=count[j-1]/시행횟수;
}
 
}

console.log(count);
console.log(확률);

답변 1

답변을 작성해보세요.

0

이런 것은 진짜 매우 큰 숫자로, 여러 번 반복해서 통계를 내봐야 보입니다. 단 한번으로는 안 보여요. 그리고 링크하신 스택오버플로우는 질문이 좀 이상한 것 같습니다.