Ruby에 사용되는 무작위 수의 균등한 분포 정보
6186 단어 Ruby
Ruby가 표준인 것 같아요. 이걸 채택했어요.
아마 수치 분포가 균등했겠죠 어쨌든 이런 느낌으로 100만 번 평균을 얻었죠
MAX_VAL = 101
REP_CNT = 10**6
sum = 0.0
prng = Random.new(Random.new_seed)
(0...REP_CNT).each{|idx|
p sum = (sum*idx + prng.rand(MAX_VAL))/(idx+1)
}
결과50.036861963137966
끝난 건 알지만 어떻게 끝냈는지 이해하기 쉽도록 차트를 꺼내봤습니다
# -*- encoding: utf-8 -*-
require 'rubygems'
require 'gruff'
FONT = "/Library/Fonts/Osaka.ttf"
MAX_VAL = 101
GRAPH_NUM = 7
REP_CNT = 10**GRAPH_NUM
graph_point = Array.new(GRAPH_NUM)
avg, rec_cnt = 0.0, 0
prng = Random.new(Random.new_seed)
(0...REP_CNT).each{|idx|
avg = (avg*idx + prng.rand(MAX_VAL))/(idx+1)
if 10**rec_cnt-1 == idx
graph_point[rec_cnt] = avg
rec_cnt += 1
end
}
p graph_point
g = Gruff::Line.new
g.font = FONT
(0..graph_point.length).each{|idx|
g.labels[idx] = "10^#{idx}"
}
g.data("Mersenne twister", graph_point)
g.write('MT.png')
実際の値は
10^0:67.0
10^1:55.5
10^2:52.39
10^3:51.352
10^4:50.076400000000085
10^5:49.93751999999963
10^6:49.99161700000036
10^7:49.99675620000007
50에 가까워진 거 알아요.분포가 균등한 것을 발견하여 안심하다
Reference
이 문제에 관하여(Ruby에 사용되는 무작위 수의 균등한 분포 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kozakana/items/b5229094cf8d29767847텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)