Есть ли умные случаи модификации кода во время выполнения?

Понимая, что мой первый ответ был довольно затруднительным в его математике, я создал новую идею. Я считаю, что алгоритм здесь подобен алгоритму некоторых других ответов, но эта реализация, по-видимому, подходит для «симпатичного» (если это соответствует простому) требованию вопроса:

def func(id):
    rnd = random()
    sum = 0
    for row in d:
        if row[0] == id:
            sum = sum + row[2]
            if rnd < sum:
                return row[1]

Например, данные из OP будут выглядеть так:

  • Выберите случайное число между 0 и 1.0
  • Если число < 0.2 возвращает первый элемент
  • Иначе, если число < 0.5 возвращает второй элемент
  • Else (если число < 1.0) возвращает третий элемент
119
задан phuclv 5 November 2018 в 01:06
поделиться