トップ «前の日記(2006-05-07) 最新 次の日記(2006-05-15)» 編集

活動日誌


2006-05-13

[Ruby]ある確率で実行

ある確率で実行したいとき、よく

if rand < 0.05
  # 5% の確率で実行
end

のように書いていたが、ふと思いついて

class Integer
  def percent
    b = rand(100) < self
    yield if b and block_given?
    b
  end
end

class Float
  def percent
    b = rand * 100 < self
    yield if b and block_given?
    b
  end
end

と書いてみた。

5.percent do
  # 5% の確率で実行
end

結構いいかも? (意味的に言えば、5.percent == 0.05 となるべきなのかもしれないけど)


2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|10|
2009|10|
2010|05|08|
2012|01|02|03|
2014|01|
2022|05|
トップ «前の日記(2006-05-07) 最新 次の日記(2006-05-15)»