通过施加总和temp=100你介绍的依赖至少两个数据点之间,因此无法建立一套独立的采样随机数据点。
一个简单的例子:
想象一下投币。系统中的随机性正好是一个二进制结果,或1位。
想象一下两个硬币翻转。系统中的随机性恰好是两个二进制结果或2位。
现在想象一下对两个硬币翻转施加一个总和约束,假设你希望系统中硬币翻转的总和等于1.因为第二个硬币翻转的结果是由第一个二元决策的结果决定的,系统中的随机性会缩小。
因此,您将系统的总体随机性从2位降低到1位。因此不可能从具有总和约束的正态分布抽样8个真(伪)随机点。在比较
>>> 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