通過施加總和temp=100
你介紹的依賴至少兩個數據點之間,因此無法建立一套獨立的採樣隨機數據點。
This answer on mathworks提供了更詳細的信息。
一個簡單的例子:
想象一下投幣。系統中的隨機性正好是一個二進制結果,或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
解決方法有很多,這裏有7個工具:
你最好的選擇是從與相應的平均分配樣本7個隨機點,然後點添加到數據集承擔差額https://www.dataquest.io/blog/python-data-visualization-libraries/ –
你的問題不清楚。你想繪製一個隨機生成的數字的直方圖,約束他們的總和是100? –
@ItamarKatz是的。我想生成這些看起來像正常分佈的8個點,但它們總結爲temp(在本例中爲100)。 – wildcolor