随机选择2个数字,最小差为5

时间:2018-09-11 06:47:43

标签: python python-2.7 list random

我有一个连续数字列表,我试图随机选择列表中的2个数字,同时确保这两个数字之间的差异大于5。而且,选择的数字不能是前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 :(得分:1)

您可以使用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)
相关问题