本文整理汇总了Python中r2.lib.utils.weighted_lottery函数的典型用法代码示例。如果您正苦于以下问题:Python weighted_lottery函数的具体用法?Python weighted_lottery怎么用?Python weighted_lottery使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了weighted_lottery函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: pick
def pick(subset, weighted=False):
if weighted:
d = {(name, weight): weight for name, weight in subset}
picked = weighted_lottery(d)
else:
picked = random.choice(subset)
return picked
示例2: lottery_promoted_links
def lottery_promoted_links(srids, n=10):
"""Run weighted_lottery to order and choose a subset of promoted links."""
promo_tuples = get_promotion_list(srids)
weights = {p: p.weight for p in promo_tuples if p.weight}
selected = []
while weights and len(selected) < n:
s = weighted_lottery(weights)
del weights[s]
selected.append(s)
return selected
示例3: choose_random_item
def choose_random_item(keep_fn=None):
item_class = weighted_lottery(g.live_config["f2p_rarity_weights"])
items_in_class = [i["kind"] for i in g.f2pitems.itervalues() if i.get("rarity", "common") == item_class]
if keep_fn:
available_items = [i for i in items_in_class if keep_fn(i)]
else:
available_items = items_in_class
return random.choice(available_items)
示例4: lottery_promoted_links
def lottery_promoted_links(sr_names, n=10):
"""Run weighted_lottery to order and choose a subset of promoted links."""
promo_tuples = get_live_promotions(sr_names)
# house priority campaigns have weight of 0, use some small value
# so they'll show if there are no other campaigns
weights = {p: p.weight or 0.001 for p in promo_tuples}
selected = []
while weights and len(selected) < n:
s = weighted_lottery(weights)
del weights[s]
selected.append(s)
return selected
示例5: generate
def generate(self):
"""Generate a string similar to samples previously fed in."""
start = weighted_lottery(self.starts)
desired_length = weighted_lottery(self.start_lengths[start])
desired_length = max(desired_length, self.order)
generated = []
generated.extend(start)
while len(generated) < desired_length:
# try each model, from highest order down, til we find
# something
for order, model in reversed(list(enumerate(self.models, 1))):
current_prefix = "".join(generated[-order:])
frequencies = model[current_prefix]
if frequencies:
generated.append(weighted_lottery(frequencies))
break
else:
generated.append(random.choice(string.lowercase))
return "".join(generated)
示例6: select_subset
def select_subset(n, weighted=False):
promos = copy(PROMOS)
selected = []
if weighted:
d = {(name, weight): weight for name, weight in promos}
while len(selected) < n and d:
i = weighted_lottery(d)
del d[i]
selected.append(i)
else:
# Sample without replacement
if n > len(promos):
return promos
else:
return random.sample(promos, n)
return selected
示例7: expect
def expect(result, random_value):
scaled_r = float(random_value) / sum(weights.itervalues())
self.assertEquals(
result,
utils.weighted_lottery(weights, _random=lambda: scaled_r))