优化Python中数字的随机化(不包括值列表)

优化Python中数字的随机化(不包括值列表),python,random,Python,Random,我需要在最小值和最大值之间生成一个随机数。这个数应该是10的倍数。 这就是我找到的解决办法 import random BLOCK = 10 def random_excluding_values(_min, _max, exclude_list): while True: random_number = round(random.randrange(_min, _max - BLOCK) / BLOCK) * BLOCK if random_number not in exc

我需要在最小值和最大值之间生成一个随机数。这个数应该是10的倍数。 这就是我找到的解决办法

import random
BLOCK = 10

def random_excluding_values(_min, _max, exclude_list):
while True:
    random_number = round(random.randrange(_min, _max - BLOCK) / BLOCK) * BLOCK
    if random_number not in exclude_list:
        return random_number

有一种方法可以使用列表理解或其他方法获得相同的结果?

在计算
范围时,下限包括10的倍数。循环时跳过可确保不会陷入无限循环。转换为集合确保您知道可以得到什么

随机导入
定义随机排除值(_最小值、最大值、排除列表、元素数):
下限=圆形(_min+4,-1)
all_nums={num for num in range(下限,_max+1,10)}
排除集合=集合(排除列表)
有效的\u选项=所有\u nums-排除\u集
返回random.sample(有效选项,元素数)
_最小=9
_最大值=103
排除列表=[40,50,60,70]
#有效_列表=[10,20,30,80,90100]
num_elems=3
对于范围(5)中的i:
打印(f'run={i};result={random\u excluding\u value(\u min,\u max,exclude\u list,num\u elems)})
产出:

run = 0; result = [80, 30, 20]
run = 1; result = [10, 20, 80]
run = 2; result = [10, 80, 30]
run = 3; result = [100, 90, 10]
run = 4; result = [10, 20, 100]
random.sample
返回一组有效数字中的选项列表。因此,您可以轻松修改以获得单个数字

返回random.sample(有效的_选项,1)[0]

提示:乘以10