假设我有一个FruitDetector类,它接受一个字符串并返回具有不同概率的可能类型的水果作为哈希:
type = {
banana: 0.2,
lemon: 0.4,
orange: 0.4
}
从哈希中的N个最大值中选择一个随机元素(在这种情况下,在柠檬和橙色之间随机选择),最简洁,最惯用的方法是什么,返回水果的名称?
答案 0 :(得分:3)
最干净的方法是一步一步地做到这一点:
# determine maximum weight
maxw = type.values.max
# select items with maximum weight
selection = type.select{|item, weight| weight == maxw}
# choose random item from selection
p selection.keys.sample
答案 1 :(得分:1)
type.group_by{|k, v| v}.max.last.sample.first