我如何创建三个随机整数,它们的和是一个特定的值?(Python)

2024-09-25 08:33:24 发布

您现在位置:Python中文网/ 问答频道 /正文

假设bob=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

但是我怎么能保证原始整数的和等于100?(共106个)。如果总和不等于106,那么我希望脚本继续运行,直到它变成106。在


Tags: fromimport脚本整数randombobprintrandint
3条回答

生成相加到某个数的数字的一般方法如下:

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]

它在0100 + bob之间选择两个切点并分配数字,如图所示:

enter image description here

这也将确保所有三个数字具有相同的分布(模拟1m试验):

^{pr2}$

与独立生成的数字相反:

mean    50.050665   27.863753   28.085582
std     29.141171   23.336316   23.552992

以及它们的直方图:

enter image description here

bob1 = (randint(0,100))
bob2 = (randint(0,(100-bob1)))
bob3 = 100 - (bob1 + bob2)

只需计算第三个值:

from random import randint
bob = 6
bob1 = randint(0, 100)
bob2 = randint(0, min(100, 100 + bob - bob1))
bob3 = 100 + bob - bob1 - bob2
print bob1
print bob2
print bob3

相关问题 更多 >