генерировать случайное число, исключающее одно число из диапазона питонов - PullRequest
0 голосов
/ 14 декабря 2018

Я генерирую число в диапазоне от 1 до 10, но хотел бы исключить число 2 из этого диапазона, я не знаю, как это сделать.

Это то, что у меня естьпока что

Ответы [ 5 ]

0 голосов
/ 14 декабря 2018

Или сделайте другой способ обусловливания, такой как ответ Оливье:

value =  random.randint(1, 9)
move = 10 if move==2 else move

Тогда move никогда больше не будет 2.

0 голосов
/ 14 декабря 2018

Вместо этого вы можете генерировать случайное значение от 1 до 9 и сдвигать его на единицу, если оно больше или равно 2.

value =  random.randint(1, 9)

move = value if value < 2 else value + 1

Математически вы хотите выбрать случайный элемент из набора9 элементов.Все, что вам нужно сделать, это отождествить элемент 3 с 2, 4 с 3 и так далее.По вероятности, это то, что мы называем случайной величиной .

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

Эта стратегия использования сопоставления особенно полезна, когда ваш набор большой и генерация его будет дорогостоящей, но правило сопоставления довольно простое.

Улучшение :

U9-Forward указал, что в этом случае отображение можно сделать несколько более эффективным.Достаточно сопоставить 2 с 10.

value =  random.randint(1, 9)

move = value if value != 2 else 10
0 голосов
/ 14 декабря 2018

Очевидный и простой интерпретируемый путь состоит в том, чтобы исключить 2 с помощью while-loop и просто рисовать числа, используя указанную вами функцию, пока 2 не будет выбрано.Это все же крайне неэффективно, но вы можете обойти это с помощью базовых концепций программирования.

Более прямым способом было бы более точное определение вашего списка, то есть без 2 и использование random.choice функция:

import random
print(random.choice([1, 3, 4, 5, 6, 7, 8, 9, 10]))
0 голосов
/ 14 декабря 2018

Вы можете исключить число 2, используя «while»

move =  random.randint(1, 10)

while move == 2:
    move = random.randint(1, 10)

Этот код будет генерировать случайное число, пока оно не будет «2»

0 голосов
/ 14 декабря 2018

Вы можете использовать random.choice:

move =  random.choice([1, 3, 4, 5, 6, 7, 8, 9, 10])
...