& ldquo; Приложение не установлено & rdquo; на одном устройстве

  1. Упорядочить веса в кумулятивное распределение.
  2. Использовать random.random () для выбора случайного поплавка 0.0 <= x < total.
  3. Найдите распределение, используя bisect.bisect, как показано в примере в http://docs.python.org/dev/library/bisect.html#other-examples .
  4. from random import random
    from bisect import bisect
    
    def weighted_choice(choices):
        values, weights = zip(*choices)
        total = 0
        cum_weights = []
        for w in weights:
            total += w
            cum_weights.append(total)
        x = random() * total
        i = bisect(cum_weights, x)
        return values[i]
    
    >>> weighted_choice([("WHITE",90), ("RED",8), ("GREEN",2)])
    'WHITE'
    

    Если вам нужно сделать несколько вариантов, разделите их на две функции: одну для построения кумулятивных весов и другую для деления пополам на случайную точку.

0
задан Kling Klang 13 July 2018 в 11:16
поделиться