我在下面创建了一个随机选择的函数,true
或者false
默认情况下每个函数都有 50% 的机会。这个功能绝不是完美的。您将如何重构此方法以使其更简洁?
def choose(weight = 50)
bucket = []
weight.times do
bucket << true
end
while bucket.size < 100
bucket << false
end
bucket.sample
end
我在下面创建了一个随机选择的函数,true
或者false
默认情况下每个函数都有 50% 的机会。这个功能绝不是完美的。您将如何重构此方法以使其更简洁?
def choose(weight = 50)
bucket = []
weight.times do
bucket << true
end
while bucket.size < 100
bucket << false
end
bucket.sample
end
以下实现更简洁、快速且类似于 ruby:
def choose(weight = 50)
rand <= weight/100.0
end
如果您只需要这些值 ( 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]
您的功能的简单等价物(100 个离散桶)
def choose(weight = 50)
rand(100) < weight
end