Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

【Ruby】RandomBellで正規乱数を扱う

 Rubyで正規乱数を使いたい場面が場面があったので備忘録がてらにメモ。

正規乱数とは、正規分布に従う形の乱数のこと。

簡単に説明すれば通常の乱数は範囲内の数値が完全にランダムで取得できますが、こちらでは正規分布に従って、値によって取得できる確率(出現率)が異なる。

ja.wikipedia.org

利用ケースとしては「A, B, C」といった値のうち、Bが一番出現率が高くて、たまにAやCが出現する……といったロジックの作成時に有効。

(3つだと正直採用理由としては薄いが)

 

今回は、手軽に正規乱数が生成できる「RandomBell」を採用することにした。

github.com

 

プログラム例: demo.rb

#!/usr/bin/ruby
require "random_bell"

20.times do
  puts RandomBell.new.rand
end

出力例: demo.rb

0.23298496223812165
0.5808889180926479
0.6339955139512485
0.5469677664536374
0.430846601996505
0.2357401173039183
0.6129031905463543
0.5509746034599111
0.6814646944451258
0.6006659779398363
0.5087945006355383
0.5929194195546358
0.42422675687108424
0.6467333263529129
0.616221802927346
0.5389514020831013
0.39782389432990556
0.485352302182309
0.31168800382348927
0.583208925506976

 

あくまで出力は0から1の値の範囲なので、利用する場合はこれに特定の数値(先ほどの例であればA, B, Cの個数)を加味してやれば良い。

(例えば個数をかけた後に整数に直すなど)

 

連絡先: plugout777★yahoo.co.jp (クローラー対策のため★を@に変更してください)