我看过其他类似问题的帖子。我知道如何生成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)
再次感谢。
我有一个工作代码可以从 csv 列中打印随机行。
#!/usr/bin/python
import csv
import random
**col**=2
with open('<filename>','r') as f:
reader=csv.reader(f)
data=[row[col] for row in reader]
from random import shuffle
shuffle(data)
print '\n'.join(data[:**100**])
f.close();
Run Code Online (Sandbox Code Playgroud)
我想参数化这个脚本。通过传递,位置(列)和样本(例如 100 个值)
我找不到一个像样的教程来解释这一点。有什么想法吗 ?