Top.Mail.Ru
Ответы

Выполнение случайной функции с определенным шансом в Python

Есть такой код:

import random

def one():
print("1")
def two():
print("2")
def three():
print ("3")

spisok_func = [one,two,three]
spisok = random.choices(spisok_func, weights=(50,30,10))

spisok()

Мне нужно чтобы одна из трех функций выполнялась рандомно с определенным шансом. Если убрать "weights=(50,30,10)) " то spisok() выполняет одну из трех функций но тогда шас просто 1к3. Подскажите как сделать, чтобы выполнялась одна из трех функций и каждая со своим шансом?

По дате
По рейтингу
Аватар пользователя
Профи

Конечно, чтобы указать разные вероятности для выполнения каждой функции, вы можете использовать метод random.choices() сделать веса равными и добавить дополнительные проверки, чтобы убедиться, что рандомно выбранная функция будет выполнена. Вот пример исправленного кода:

```python
import random

def one():
print("1")

def two():
print("2")

def three():
print("3")

spisok_func = [one, two, three]

# Увеличьте вероятность какого-либо события для изменения шансов выполнения каждой функции
weights = [5, 3, 1]

# Выберите случайную функцию на основе указанных весов
chosen_func = random.choices(spisok_func, weights=weights, k=1)[0]

# Выполните выбранную функцию
if chosen_func is one:
one()
elif chosen_func is two:
two()
elif chosen_func is three:
three()
```

Этот код будет выполнять каждую функцию со своей вероятностью, которая задается весами.

Аватар пользователя
Мастер

Условие прописать

Аватар пользователя
Мастер

Ок