我也看到过其他帖子在讨论类似的问题。我知道如何生成N个正整数。我还知道如何限制随机生成的整数的和。只满足不在指定值范围内的问题。在
例如,generate_ints(n, total, low, high)
应该生成n个值数组,这样每个值都在低值和高值之间,并且总和等于总和。如有任何建议/帮助,我们将不胜感激。在
例如,generate_ints(4, 40, 4, 15)
应该生成类似
[7,10,13,10]
我不在乎这些数字是否重复,只要它们不是高度扭曲的。我使用np.randon.randint(5,15,n)
来选择整数。在
到目前为止,我已经尝试了以下方法,但是没有用-
^{pr2}$再次感谢。在
如果我正确理解规范,您希望随机生成受限整数compositions,这样每个可能的组合都有相同的被选择的可能性。在
我们可以将this answer应用于均匀生成随机整数partition的问题,从而精确地解决小输入值问题。我们只需要一种方法来计算受限制的k-组成。在数学的this answer中,有一个递归公式可以用来解决一个相关的问题,但事实证明,作为this answer的一部分,有一个更明确的公式,它使用二项式系数。下面是一个纯Python实现:
要选择一个随机组合,我们只需生成一个比可能的组合总数小的随机索引,然后构造
i-th
字典组合(有关使用的递归关系的解释,请参阅相关问题)。这应该以同样的概率产生所有可能的结果。在但是,因为}的大值,这种方法相当慢。对于较大的值,近似的解决方案会更好地为您服务。在
C1(n, k, a, b)
是指数增长的,对于n
和{结果:
^{pr2}$这是我的尝试,我会解释的。在
在函数内部,我设置了两个常量,}。在内部}随机整数。如果和等于
randys
和{while
循环中,只要begin
小于n
,它就会在low
和high
之间生成{total
,则退出外部while
循环,否则需要重置常量。只返回
randys
将给出一个NumPyarray
的列表。使用tolist()
方法,将生成一个列表。现在我们有一个列表列表。我用了一个简短而甜蜜的清单理解法把它压平了。最后
return
列出并输出所需的内容。h。在
相关问题 更多 >
编程相关推荐