-
카테고리
-
해결 여부
미해결
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(확률);
답변을 작성해보세요.
0
조현영
지식공유자2019.08.23
이런 것은 진짜 매우 큰 숫자로, 여러 번 반복해서 통계를 내봐야 보입니다. 단 한번으로는 안 보여요. 그리고 링크하신 스택오버플로우는 질문이 좀 이상한 것 같습니다.
답변 1