如何自動產生不同分佈類型的隨機樣本?假設我有一個 5 行 2 列的表格。 第一列用於分佈類型(例如常態、對數常態、威布爾等),第二列用於對應參數。 我想建立一個 for 循環,為 5 行中的每一行建立一個新的資料表,其中在該新資料表中,將新增一個新列,並根據行的參數使用隨機取樣函數。
例如第 1 行 --> 正常,(0.1,0.02);建立一個新資料表,其中一列的公式為
randomnormal(0.1,0.02)
我目前的挑戰是不同的分佈類型需要不同數量的參數。 感謝一些關於我應該如何處理這個問題的見解。
品質和工藝工程回覆:如何自動從不同分佈類型產生隨機樣本?吉姆,它有效! 謝謝
回覆:如何自動從不同分佈類型產生隨機樣本?你好,
對於區分大小寫的問題,解決方法如下:
Match( Uppercase( :Distribution ),
"NORMAL", Random Normal( :Parameter 1, :Parameter 2 ),
"LOGNORMAL", Random Lognormal( :Parameter 1, :Parameter 2 ),
.
)
關於限制列數,我會回覆您,因為它有點棘手。
最好的,
TS
回覆:如何自動從不同分佈類型產生隨機樣本?謝謝蒂埃里,如果我想限制參數的列數,有什麼建議嗎?
我的另一個擔憂是,我相信 Match() 公式區分大小寫。 我可以嘗試透過在列上放置清單檢查來控制這一點。 有其他方法可以控制/管理嗎?
回覆:如何自動從不同分佈類型產生隨機樣本?這是一個簡單的範例,說明如何執行您的請求
Names Default To Here( 1 );
dt = New Table( "Sample",
Add Rows( 5 ),
New Column( "Types",
Character,
Set Values(
{"Normal", "Lognormal", "Weibull", "Uniform", "Johnson Su"}
),
Set Display Width( 79 )
),
New Column( "Parameters",
Character,
Set Values(
{"(0.1,0.02)", "(0.2,.005)", "(0.3,0.005)", "(0.1,0.5)",
"(0.5, 1, 1, 1)"}
),
Set Display Width( 101 )
)
);
For( i = 1, i <= N Rows( dt ), i++,
Eval(
Substitute(
Expr(
New Table( dt:Types[i],
add rows( 20 ),
New Column( "Random " || dt:Types[i],
set each value( __formula__ )
)
)
),
Expr( __formula__ ),
Parse( "Random " || dt:Types[i] || dt:Parameters[i] )
)
)
);
請花時間完全理解該腳本的工作原理,如果您不理解,請回复,以便社區為您提供可能需要的其他資訊。
回覆:如何自動從不同分佈類型產生隨機樣本?你好,
一些想法:
1)如果可能的話,我會將參數拆分為各列,以使公式的腳本編寫更容易
2)我會使用MATCH公式來找出分佈的名稱,並專門為對應的分佈呼叫Random函數
Match( :Distribution,
"Normal", Random Normal( :Parameter 1, :Parameter 2 ),
"LogNormal", Random Lognormal( :Parameter 1, :Parameter 2 ),
.
)