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

我有一个小脚本,可以从一组范围内为我生成一个随机数,例如:(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

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

http://img2.mukewang.com/63aaa216000164e415331294.jpg

12345678_0001
浏览 244回答 2
2回答

慕少森

您可以使用选择方法:from random import choicedef 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

慕工程0101907

参考我问题下splash58的评论,解决办法是:似乎,如果更改else: a = int(frames)为,您的代码有效else:  fr_sequence.append(int(frames))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python