読者です 読者をやめる 読者になる 読者になる

ボックス=ミューラー法

ボックスミューラー法の養殖された乱数とはww?

10000.times {
  x = rand()
  y = rand()

  z1 = Math.sqrt(-2 * Math.log(x)) * Math.cos(2 * Math::PI * y)
  z2 = Math.sqrt(-2 * Math.log(x)) * Math.sin(2 * Math::PI * y)

  puts "#{z1}\t#{z2}"
}
ruby bm.rb | pbcopy 

googleスプレッドシートに貼り付けてヒストグラムのグラフを作る(重い…)

rand - Google スプレッドシート

f:id:paulownia:20161105120027p:plain

f:id:paulownia:20161105120032p:plain

1万回程度ではあんまり綺麗なグラフにならないすね


おまけ

乱数にコクを出す?

togetter.com

コクとはww?

count = (ARGV[0] || 1).to_i

10000.times do
  puts Array.new(count) { rand() }.inject(&:+) / count 
end

rand.rbとして保存

$ ruby rand.rb 1 | pbcopy

これをgoogleスプレッドシートでグラフにする

rand - Google スプレッドシート

f:id:paulownia:20161105121207p:plain

f:id:paulownia:20161105121225p:plain

f:id:paulownia:20161105121304p:plain

なるほど正規分布っぽくなる

たとえば分子のエネルギーなどは正規分布なので自然界の挙動をエミュレートするには単純な乱数よりいいかもしれませんね


なるほどなるほど

中心極限定理 - Wikipedia