如何生成范围为(-1,1)以使总和为0的随机值?

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

如果总和为1,我可以将这些值除以它们的总和。但是,当总和为0时,此方法不适用。

也许我可以计算每个采样值的相反值,所以我总是会有一对数字,它们的和为0。但是这种方法减少了我希望在随机数组中拥有的“随机性”。] >

还有更好的方法吗?

如果总和为1,我可以将这些值除以它们的总和。但是,当总和为0时,此方法不适用。也许我可以计算每个采样值的相反值,所以我将始终......>

我会尝试以下解决方案:

def draw_randoms_while_sum_not_zero(eps):
    r = random.uniform(-1, 1)
    sum = r
    yield r
    while abs(sum) > eps:
        if sum > 0:
            r = random.uniform(-1, 0)
        else:
            r = random.uniform(0,1)
        sum += r
        yield r
python random
1个回答
0
投票

我会尝试以下解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.