我試圖產生8號與代碼如下列表:生成基於約束步驟程序號碼列表
import numpy as np
import pandas as pd
n2 = np.random.uniform(0.1, 1.5)
c2 = np.random.uniform(4,14)
c3 = np.random.uniform(0.1,2.9)
ic4 = np.random.uniform(0.01,1)
nc4 = np.random.uniform(0.01,1)
ic5 = np.random.uniform(0,0.2)
nc5 = np.random.uniform(0,0.01)
comp_list = []
for i in range(1):
if n2/c2 <= 0.11:
comp_list.append(c2)
comp_list.append(n2)
if c3/c2 <= 0.26:
comp_list.append(c3)
if ic4/c3 <= 0.27:
comp_list.append(ic4)
if nc4/ic4 <= 1:
comp_list.append(nc4)
if ic5/nc4 <= 0.06:
comp_list.append(ic5)
if nc5/ic5 <= 0.25:
comp_list.append(nc5)
sum = n2+c2+c3+ic4+nc4+ic5+nc5
c1 = 100-sum
comp_list.append(c1)
df = pd.Series(comp_list)
print df
然而,當我運行的代碼中,量輸出的數字是不相符的,並且可以從3至5,例如範圍,1個運行會給我:
0 1.560
1 0.251
2 0.008
3 86.665
第二次運行可以給我:
0 12.929
1 1.015
2 2.126
3 0.093
4 0.0025
5 83.376
我不知道爲什麼輸出不一致。
也許我需要迭代通過隨機分佈,直到所有的if語句都滿意?還是我錯過了明顯的東西?
因爲你用'np.random.uniform()'生成隨機數字? – gtlambert
我需要隨機生成的數字來滿足約束(即<= 0.2)。有沒有辦法檢查隨機數是否滿足約束條件?一種迭代? – Joey
你還沒有解釋你想要做什麼或你的期望。 – pjs