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

我有一个运行数字列表,我试图在列表中随机选择 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。因此,如果列表太短,代码应该返回错误并退出程序。


千巷猫影
浏览 164回答 1
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:&nbsp; &nbsp; 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:&nbsp; &nbsp; raise RuntimeError('No number in list differs from the first number %d by more than 5' % n)_list.append(random.choice(l))print(_list)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python