棄却法による乱数生成
任意の確率分布に従う乱数を生成
def reject_sampling(x_min, x_max, y_min, y_max, func) while true x = x_min + (rand * (x_max - x_min)) y = y_min + (rand * (y_max - y_min)) if y <= func.call(x) break x.to_i else redo end end end # 分布関数 def power_law lambda { |x| x ** (-0.8) } end