我有一个小脚本,它从如下范围的集合中为我生成一个随机数:(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
如何添加额外的范围或单个数字,以更好地控制随机化的数字?
您可以使用选择方法:
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