我在下面创建了一个函数,随机选择true
或false
,默认情况下每个函数的概率为50%。这个功能绝不是完美的。你会如何重构这种方法以使其更简洁?
def choose(weight = 50)
bucket = []
weight.times do
bucket << true
end
while bucket.size < 100
bucket << false
end
bucket.sample
end
答案 0 :(得分:10)
以下实现更简洁,快速和类似ruby:
def choose(weight = 50)
rand <= weight/100.0
end
答案 1 :(得分:3)
简单等效于您的功能(100个不连续的桶)
def choose(weight = 50)
rand(100) < weight
end
答案 2 :(得分:2)
如果您只需要这些值(true
/ false
),则选择任意值会更容易一些。
def choose(weight = 50)
chance = rand() # value between 0 and 1
chance <= weight / 100.0
end
10.times.map{ choose(80)} # => [true, false, true, true, true, true, false, true, true, false]