【问题标题】:Generating N random data sets from a sample of n values following a normal distribution? (Python)从正态分布的 n 个值的样本中生成 N 个随机数据集? (Python)
【发布时间】:2021-09-08 04:21:29
【问题描述】:

我想从随机数列表中生成 N 个随机数据集。我可以使用这个轻松生成 n 个随机值:

normal(loc=mu, scale=sigma, size=n)

其中 loc 是平均值,scale 是标准差,size 是值的数量。

但是现在我想重复这个随机生成器 N 次来创建 N 个彼此不同的数据集。任何人都可以帮忙吗?我觉得这并不难,但我对编程很陌生。

【问题讨论】:

  • 彼此不一样怎么办?你的意思是用这些参数抽取 N 个正态分布样本吗?
  • 我的意思是 N 个不同的数据集给定我的分布范围。例如,假设我的平均值为 2,Std 为 1,我为此集合生成 5 个随机数:(1.7, 1.3, 0.4, 1.8, 0.7)。现在假设我想再生成 1000 个仍在分发中的这些。我该怎么做?感谢任何形式的帮助!

标签: python random


【解决方案1】:

如果您想要从正态分布生成的k 值的n 样本,那么

np.random.normal(loc=mu, scale=sigma, size=(n, k))

例子:

>>> mu, sigma, n, k = 0, 0.1, 10, 5
>>> np.random.normal(loc=mu, scale=sigma, size=(n, k))
array([[-0.07518366, -0.1949778 , -0.00940813,  0.00993604, -0.07682189],
       [-0.03299335,  0.01224153,  0.15198659,  0.18654867,  0.18538708],
       [-0.10499824,  0.11863809, -0.08196595, -0.07259012, -0.13982268],
       [ 0.08297579, -0.08121311,  0.19496005,  0.00710787,  0.04434566],
       [ 0.00057888, -0.18052104, -0.02845761,  0.03330374, -0.08525697],
       [-0.11370541,  0.01166695, -0.09914575,  0.14135651, -0.03463862],
       [-0.13043708,  0.16128385,  0.03448309,  0.20302464,  0.02949679],
       [-0.08506748, -0.08459261,  0.05036709, -0.05956242, -0.10132293],
       [ 0.07130109, -0.01409814, -0.06980729,  0.05180577,  0.19270917],
       [ 0.04884829, -0.02219597,  0.04511094, -0.10689077, -0.00715145]])

【讨论】:

  • @AmmarBayyari 不客气。如果此答案解决了您的问题,请单击复选标记,以便从未回答队列中删除此问题。
【解决方案2】:

试试这个:

import numpy as np
repeat = 100
mu, sigma = 0, 0.1 # mean and standard deviation
[np.random.normal(mu, sigma, 10) for r in range(repeat)]

您可以阅读random的文档:

正常(loc=0.0, scale=1.0, size=None)

参数

size : 整数或整数元组,可选 输出形状。如果给定的形状是,例如,(m, n, k),那么 m * n * k 抽取样本。如果大小为None(默认), 如果locscale 都是标量,则返回单个值。 否则,将抽取np.broadcast(loc, scale).size 样本。

您可以使用size,如下所示:

repeat ,length =2 , 4
mu, sigma = 0, 0.1
np.random.normal(mu, sigma, size=(repeat,length))

输出:

array([[ 0.09247016,  0.04766574, -0.16065042,  0.15859744],
       [ 0.08376381,  0.01822829, -0.0690609 , -0.10800701]])

【讨论】:

猜你喜欢
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
相关资源
最近更新 更多