【问题标题】:How to generate random sampling in python . with integers. with sum and size given如何在 python 中生成随机抽样。与整数。给定总和和大小
【发布时间】:2018-12-03 10:18:55
【问题描述】:

在 python 中是否有直接函数或任何其他方式,我可以为给定大小生成随机整数,并且我也想指定这些数字的总和。

例如。 我想生成 7 个数字,总和为 341。

我也可以为此指定平均值吗?比如 7 个数字,均值为 49,总和为 341。(可选)

【问题讨论】:

  • 是的,只要从一些代码开始,您就可以为所欲为。
  • 我确实有代码等待我会发布
  • 绘制 6,选择最后一个作为 sum(your6) 与目标值的差异。
  • 如果和 341 并且有 7 元素,那么根据定义,你怎么能得到 165 的平均值,那么平均值就是 48.71
  • 您无需指定平均值 - 7 数字加起来 341 的平均值总是 48.71

标签: python numpy random


【解决方案1】:

我发现这段代码可能会做得不错:

_sum = 341
n = 7
Argentina = np.random.multinomial(_sum, np.ones(n)/n, size=1)[0]
print (Argentina)
[44 46 42 52 53 50 54]

【讨论】:

  • 您可能应该将这个问题与您的问题一起发布,但它可以满足您的需求 - 您的问题是什么?
  • @AChampion 我的问题是我想要 7 个随机数,总和为 341,值接近均值。当我问问题后发现这个时,我没有这个代码。
  • “接近均值”是什么意思?多近?顺便说一句,这不是您在问题中提出的问题。
【解决方案2】:

您可以使用 random.gaussmean 周围生成 6 个具有一定标准偏差(接近度)的数字,并根据 @PatrickArtner 的建议构建第 7 个数字,例如使用来自mean的3标准开发者:

In []:
import random
vals = [int(random.gauss(341/7, 3)) for _ in range(6)]
vals.append(341 - sum(vals))
vals, sum(vals), sum(vals)/7

Out[]:
([47, 47, 48, 48, 54, 50, 47], 341, 48.714285714285715)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    相关资源
    最近更新 更多