python随机数生成器,用于长数字列表



我想知道是否有人能帮我写一个更好的程序。我的目标是制作一个随机数生成器,但它有非常具体的参数。我需要找到一个随机数,在一个住宅小区中寻找单元号的随机数。参数在101-112、114-125、128-149、201-230、232-263、265-280和300-305之间。我列出了每个数字的列表,然后调用了随机数函数,但我只是想知道是否有更简单或更简洁的方法来制作这个程序。非常感谢。

为了确保您的选择是等概率的,您可以从您的范围中进行选择,其权重等于每个范围中的值的数量。random.choices允许您指定权重。

然后,您可以简单地选择所选范围内的任何值:

import random
def random_in_ranges(ranges):
weights = [end - start + 1 for start, end in ranges]
range_ = random.choices(ranges, weights=weights)[0]
return random.randint(*range_)


ranges = [(101,112), (114,125), (128,149), (201,230), (232,263), (265,280), (300,305)]
print(random_in_ranges(ranges))
# 262

我认为你应该使用

flat_num = random.choise(flats) 

如果你的号码在某个Iterable结构中

如果你只有这样一个数字,你可以随机选择范围,然后从选择的范围中选择:

flat_num = random.randint(
*random.choice(
[(101,112),(114,125),(128,149),(201-230),(232-263),(300-305)]
)
)

最新更新