如何创建三个随机整数,其总和为特定值?(Python)

Bub*_*ter 1 python random integer sum

假设鲍勃 = 6

我想创建 3 个总和为 106 的随机整数(100 + bob 的原始整数。它可能是 10,但在本例中是 6)。

我有:

from random import *
bob = 6
bob1 = (randint(0,100))
bob2 = (randint(0,100))
bob3 = (randint(0,100))
print bob1
print bob2
print bob3
Run Code Online (Sandbox Code Playgroud)

我可以生成整数,但如何确保它们的总和 = 100 + 原始整数?(共 106 个)。如果总和不 = 106,那么我希望脚本继续执行,直到达到 106。

ayh*_*han 5

生成加起来等于某个数字的数字的一般方法如下:

import random
bob = 6
numbers = sorted(random.sample(range(100+bob), 2))
bob1 = numbers[0]
bob2 = numbers[1] - numbers[0]
bob3 = 100 + bob - numbers[1]
Run Code Online (Sandbox Code Playgroud)

0它选择和之间的两个分割点100 + bob并分配数字,如下所示:

在此输入图像描述

这还将确保所有三个数字具有相同的分布(通过 1m 次试验进行模拟):

mean    34.700746   35.639730   35.659524
std     24.886456   24.862377   24.861724
Run Code Online (Sandbox Code Playgroud)

与相关生成的数字相反:

mean    50.050665   27.863753   28.085582
std     29.141171   23.336316   23.552992
Run Code Online (Sandbox Code Playgroud)

以及他们的直方图:

在此输入图像描述