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

Python:从范围(或两个范围)和单个数字中获取随机数

Python:从范围(或两个范围)和单个数字中获取随机数

12345678_0001 2022-12-27 15:42:52
我有一个小脚本,可以从一组范围内为我生成一个随机数,例如:(1-6)。现在我不仅要读取一个范围,还要添加另一个范围或单个数字,例如:('1-6', '10', '12-17')到目前为止,我的脚本看起来像这样,“choose_frame_set”是范围的参数:def retime_frames():    # choose frame set from presets    fr_range = hou.evalParm("choose_frame_set")    # extract frame range from list into readable string    fr_sequence = []    for frames in fr_range.split(','):        if '-' in frames:            a, b = frames.split('-')            a, b = int(a), int(b)            fr_sequence.extend(range(a, b + 1))        else:            a = int(frames)    # set random frame from frame range    random_frame = str(random.sample(fr_sequence, 1))    # replace special characters    for char in '[]':          random_frame = random_frame.replace(char,'')    hou.parm('retime_frame').set(random_frame)    print random_frame    return random_frame我如何添加额外的范围或单个数字,以更好地控制我随机化的数字?
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

您可以使用选择方法:


from random import choice


def ran(*r):

    num = []

    for n in r:

        num += [m for m in range(n[0],n[1]+1)]

    return choice(num)


print(ran((1,4),(5,7),(12,13)))

所有可能的输出:1,2,3,4,5,6,7,12,13


查看完整回答
反对 回复 2022-12-27
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

参考我问题下splash58的评论,解决办法是:

似乎,如果更改else: a = int(frames)为,您的代码有效else:
 fr_sequence.append(int(frames))


查看完整回答
反对 回复 2022-12-27
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信