为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千巷猫影 2021-06-04 17:04:17
我有一个运行数字列表,我试图在列表中随机选择 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 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

您可以使用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)


查看完整回答
反对 回复 2021-06-15
  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号