*いしのなかにいる*

oops ! I am in rock !

【Ruby】ランダムに実行したい処理の実装方法

こんちは

今回はタイトルの通り、rubyでランダム処理を実装する方法です。

乱数の取得方法

乱数を取得する方法は以下の4通り

  • rand(普通のrand)
  • Random.rand
  • Random#rand
  • Array.sample

どの方法でもランダムな値を取得可能だけど、1番のメソッドだけfloatが使えない(というかintとして判定される)

[1] pry(main)> rand 10 # 1~10の中で乱数を取得
=> 9
[2] pry(main)> rand 10..15 # 10~15の中で乱数を取得
=> 13
[3] pry(main)> Random.rand 10
=> 9
[4] pry(main)> Random.rand 10..15
=> 12
[5] pry(main)> Random.new.rand 10
=> 5
[6] pry(main)> Random.new.rand 10..15
=> 11
[7] pry(main)> [*1..10].sample
=> 9
[8] pry(main)> [*10..15].sample
=> 15
[1] pry(main)> rand 1.1
=> 0
[2] pry(main)> rand 1.2
=> 0
[3] pry(main)> rand 1.9
=> 0
[4] pry(main)> rand 4.1
=> 2
[5] pry(main)> Random.rand 1.1
=> 0.193044472967513
[6] pry(main)> Random.new.rand 1.1
=> 0.9249129201223988

これらのうち、どれかの方法を使用して分岐を組みます。

例)10分の1の確率で処理を実行する。

if rand(10) + 1 == 1
  do_something # 10分の1の確率で実行したい処理
end

最後に

こんな感じで乱数を取得して、一定の確率で行いたい処理を実装できます。