Monte Carlo 从 Python 中的三角分布模拟

Monte Carlo simulation from a triangular distribution in Python

我是 python 的新手,正在尝试使用 numpy.random 三角函数来 运行 来自几个三角分布的一系列 Monte Carlo 模拟,然后附加每个 运行 的模拟输出。示例数据如下。

ID  Low  Mode  High  
A   10   15    25
B   7    20    22
C   2    18    20
D   1    4     5
E   13   25    34

我想为每个 ID 运行 10000 运行s 并附加结果。我知道我可以 运行 每个 ID 例如 ID A 使用 np.random.triangular(10, 15, 25, 10000)。可能需要将 for 循环写入 运行 并附加所有 ID。谢谢!

更新!

预期的输出格式为:

ID Run      Output
A   1       11
A   2       23
.
.
.
A   10000   18
B   1       21.5
B   2       9
.   .       .
.   .       .
.   .       .
B   10000   19
C   1       2.5
C   2       13
.   .       .
.   .       .
.   .       .

df 是一个包含您的数据的数据框,在循环中我遍历行,所以基本上新数据框的每一行都会有一个包含 10000 个样本的数组。

import pandas as pd
import numpy as np
Low = [10,7,2,1,13]
Mode = [15,20,18,4,25]
High = [25,22,20,5,34]
ID = ['A', 'B', 'C', 'D', 'E']
df = pd.DataFrame(zip(Low, Mode, High), columns = ['Low', 'Mode', 'High'], index = ID)
cols = ['Output']
        
df2 = pd.DataFrame(columns=cols, index = ID)

for l in range(5):
    result = np.random.triangular(df.iloc[l][0], df.iloc[l][1], df.iloc[l][2], 10000)
    df2.iloc[l][0] = result

输出示例: