Случайный выбор 2 чисел с минимальной разницей 5 - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть список набираемых чисел, и я пытаюсь случайным образом выбрать 2 числа в списке, убедившись, что разница между этими двумя числами больше 5. Кроме того, выбранные числа не могут быть первыми или последними 5номера списка ввода.

Я написал этот код, но он плохо работает.

_list = random.sample(range(5, len(_det)-5), 2)

if max(_list) - min(_list) < 5:
    _list = random.sample(range(5, len(_det)-5), 2)
else:
    pass

Несколько различных списков проходят через один и тот же код.Некоторые из них могут иметь длину до 800 текущих цифр, а некоторые - до 14. Поэтому, если список слишком короткий, код должен вернуть ошибку и выйти из программы.

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете использовать random.choice, чтобы выбрать первое число, удалить все номера из списка, которые отличаются от первого числа менее чем на 5, и снова использовать random.choice, чтобы выбрать второе число из нового списка:

import random
_det = [1,3,5,6,7,4,2,5,6,7,8,4,2,1,4,9,6,4,6,9]
l = _det[5:-5]
if not l:
    raise RuntimeError('Not enough numbers in the list')
n = random.choice(l)
_list = [n]
l = [i for i in l if abs(i - n) >= 5]
if not l:
    raise RuntimeError('No number in list differs from the first number %d by more than 5' % n)
_list.append(random.choice(l))
print(_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...