生成一个范围内的N个正整数,总计python中的总数

sum*_*oka 5 python random numpy range python-2.7

我看过其他类似问题的帖子。我知道如何生成N个正整数。我也知道如何限制随机生成的整数的总和。唯一的问题是满足N个值均未超出指定范围的条件。

例如,generate_ints(n, total, low, high)应生成n个值数组,以使每个值介于低值和高值之间,并且总和加起来。任何指针/帮助将不胜感激。

例如generate_ints(4, 40, 4, 15)应该生成类似

[7,10,13,10]
Run Code Online (Sandbox Code Playgroud)

我不在乎数字是否重复,只要它们不高度偏斜即可。我np.randon.randint(5,15,n)用来选择整数。

到目前为止,我已经尝试了以下方法,但是它不起作用-

import numpy as np 
import random 
from random import uniform as rand 

total=50 
n=10 
low=2 
high=15 
result=[] 
m=0 
nobs=1 
while nobs <= n: 
    if m >= (total - low): 
        last_num= total -new_tot 
        result.append(last_num) 
    else: 
        next_num=np.random.randint(low,high,1) 
        new_tot = sum(result) + next_num 
        result.append(next_num) 
        m=new_tot 
    nobs +=1 

print result 
print sum(result)
Run Code Online (Sandbox Code Playgroud)

再次感谢。