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

问题描述 投票:-1回答:1

我有一个小脚本,它从如下范围的集合中为我生成一个随机数:(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

如何添加额外的范围或单个数字,以更好地控制随机化的数字?

retime_frame

python random add
1个回答
0
投票

您可以使用选择方法:

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

© www.soinside.com 2019 - 2024. All rights reserved.