Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成一个';正态分布';类似于python中基于一个值的数据_Python_Gaussian - Fatal编程技术网

生成一个';正态分布';类似于python中基于一个值的数据

生成一个';正态分布';类似于python中基于一个值的数据,python,gaussian,Python,Gaussian,我有一个变量温度,比如说温度=100。我想做的是生成8个数据点。这8个点的显示如图所示。它看起来像正态分布,但我想在这些点中添加大量随机值,使它们看起来不像一个完美的正态分布。最终数据(曲线下的区域)应求和为temp。有人能建议如何用Python轻松、整洁地完成这项工作吗 我尝试在numpy/matplot中使用分布函数。然而,我想知道我怎么能得到如图所示的8分(x=0,1,2,3,4…)?我也不知道怎么把它们加起来是100 通过施加总和temp=100可以在至少两个数据点之间引入依赖关系,从而

我有一个变量温度,比如说温度=100。我想做的是生成8个数据点。这8个点的显示如图所示。它看起来像正态分布,但我想在这些点中添加大量随机值,使它们看起来不像一个完美的正态分布。最终数据(曲线下的区域)应求和为temp。有人能建议如何用Python轻松、整洁地完成这项工作吗

我尝试在numpy/matplot中使用分布函数。然而,我想知道我怎么能得到如图所示的8分(x=0,1,2,3,4…)?我也不知道怎么把它们加起来是100


通过施加总和
temp=100
可以在至少两个数据点之间引入依赖关系,从而无法创建一组独立采样的随机数据点

提供更详细的信息

一个简单的例子:

想象一下掷硬币的情景。系统中的随机性正好是一个二进制结果,或1位

想象两次抛硬币。系统中的随机性正好是两个二进制结果或2位

现在想象一下对两次抛硬币施加总和约束,假设您希望系统中的抛硬币总和正好等于1。由于第二次抛硬币的结果由第一次二元决策的结果决定,因此系统中的随机性减小

因此,可以将系统的总随机性从2位减少到1位

因此,不可能使用和约束从正态分布中采样8个真(伪)随机点

您最好的选择是从具有适当平均值的分布中随机抽取7个点,然后向数据集中添加一个点以吸收差异:

>>> import numpy as np
>>> temp = 100.0
>>> datapoints = 8
>>> dev = 1
>>> data = np.random.normal(temp/datapoints, dev, datapoints-1)
>>> print(data)
[ 11.70369328  10.77010243  11.20507387  12.40637644  12.81099137
  12.55329521  10.95809056]
>>> data = np.append(data,temp-sum(data))
>>> data
array([ 11.70369328,  10.77010243,  11.20507387,  12.40637644,
        12.81099137,  12.55329521,  10.95809056,  17.59237685])
>>> sum(data)
100.0

有很多解决方案,这里有7个工具,你的问题不清楚。是否要绘制随机生成的数字的柱状图,并限制其总和正好为100?@ItamarKatz是。我想生成这8个点,看起来像是正态分布,但它们的总和是temp(在这个例子中是100)。谢谢你的回答。我想要的比你的答案容易。我不需要你提到的那种严格的“随机性”。我想要的是生成这8个点,看起来像正态分布,但它们有一些随机性。e、 我可以简单地给列表中的第二个元素添加一个随机值,然后在最后第三个元素上减去相同的值,这样总和就保持不变。你答案的主要问题是总和不等于温度。当您“附加”最后一个值时,最终分布不再是正常的。有什么建议吗?