在python中的列表元素中设置最小阈值

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

假设我要创建一个包含数千个元素(浮点数)的列表。我想在所有项目中设置最低阈值。因此,在每个步骤中,我想将一个元素(浮点数)添加到列表中,并且要检查添加的数字是否与所有元素的差最小。

类似这样:我有一个数字列表(1.2、2.7、0.7、4.9),我想添加一个新元素。它应该检查随机生成的数字是否对所有元素都具有最小阈值,如果没有生成另一个数字,则再次检查该阈值。

如果能给我提示,我将不胜感激。

python list random threshold
1个回答
1
投票

您可以做这样的事情:

import random

def generate_list_min_threshold(size=1000, threshold=0.01, min_value=-10, max_value=10, seed=1):
    random.seed(seed)
    ret = []
    while len(ret) < size:
        candidate = random.uniform(min_value,max_value)  # changed based on comment from Błotosmętek
        if all(abs(candidate-value) > threshold for value in ret):
            ret.append(candidate)
    return ret

显然,这会尝试在[min_value, max_value]中统一采样值,甚至可能没有有效的数字要添加(取决于阈值配置)。为了获得更好的性能,考虑到列表中的当前元素,您可能需要考虑条件分布。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.