我目前正在尝试为一个项目建立一个随机数生成方法。其目的是随机生成20个变量,并设置一个总和。我的问题是随机范围。我总是得到我的low>=High,或者在这种情况下,和变得比开始小。我以前用过随机的,但没有成功。我如何在保持随机范围内的方法的同时解决这个问题呢?
def Randomize(NumVariables,VarSum):
Start = 500
Step = 1
Sum = VarSum
Parameters=[];
for i in range(NumVariables):
Parameters.append(random.randrange(Start,Sum,Step))
Sum = Sum - Parameters[i]
Start = Start - 25
发布于 2018-05-28 15:35:26
这似乎是一个递归问题,因此我研究了一个递归解决方案:
from random import randrange
def randomize(number_variables, variable_sum):
if number_variables == 1:
return [variable_sum]
variable = randrange(variable_sum // number_variables // 2, 1 + 2 * variable_sum // number_variables)
return [variable] + randomize(number_variables - 1, variable_sum - variable)
numbers = randomize(20, 10000)
print(sum(numbers), '=', numbers)
输出量
> python3 test.py
10000 = [995, 256, 671, 626, 884, 763, 704, 211, 702, 479, 253, 346, 348, 518, 495, 206, 492, 319, 653, 79]
> python3 test.py
10000 = [261, 497, 562, 885, 659, 496, 383, 889, 319, 264, 246, 563, 858, 712, 671, 255, 599, 363, 250, 268]
>
https://stackoverflow.com/questions/-100001606
复制相似问题