Python利用蒙特卡洛模拟生成符合正态分布特征参数的多组随机数并导为excel表

#Python利用蒙特卡洛模拟生成符合正态分布特征参数的的1000组随机数并导出为excel表#
具体要求:
1.利用python生成期望为0,平均值为20,标准差为6的“对数正态分布”的1000组随机数M,以及生成期望为0,平均值为25,标准差为5的“正态分布”的1000组随机数N(注意一个是对数正态分布,一个是正态分布)
2.对结果M、N分别进行可视化
3.将生成的随机数M和N以excel表的形式保存至D盘目录下。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 线性规划的大M法和非线性规划的拉格朗日乘子法中的 1.5 比较Excel手推,Excel自带包,python自带库,不使用python自带库四者大M法求解结果。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    从上面的结果来看,四个方法得到的结果都相差无几,只是精度的问题,比较四个方式的操作难度,最难的肯定是用Excel自己推算大M法,要很细心才能得到正确的结果,用Excel自带的线性规划求解包做起来非常简单,一步到位。python两者肯定是使用自带的库的代码量要少一点,但是不用库更有利于自己理解算法。

  • 以下回答来自chatgpt:

    首先,我们可以使用numpy库来生成随机数,并使用matplotlib库进行可视化。然后,我们可以使用pandas库将生成的随机数保存为Excel表格。

    下面是具体实现步骤:

    1. 导入所需的库:
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    1. 生成符合要求的随机数M和N:
    # 生成随机数M
    mean_m = 20
    std_m = 6
    size_m = 1000
    random_m = np.random.lognormal(mean=np.log(mean_m), sigma=std_m, size=size_m)
    
    # 生成随机数N
    mean_n = 25
    std_n = 5
    size_n = 1000
    random_n = np.random.normal(loc=mean_n, scale=std_n, size=size_n)
    
    1. 可视化生成的随机数M和N:
    # 可视化M
    plt.hist(random_m, bins=50, density=True, alpha=0.75, color='b', label='M')
    plt.xlabel('Value')
    plt.ylabel('Probability')
    plt.title('Distribution of M')
    plt.legend()
    plt.show()
    
    # 可视化N
    plt.hist(random_n, bins=50, density=True, alpha=0.75, color='r', label='N')
    plt.xlabel('Value')
    plt.ylabel('Probability')
    plt.title('Distribution of N')
    plt.legend()
    plt.show()
    
    1. 将生成的随机数M和N保存为Excel表格:
    data = {'M': random_m, 'N': random_n}
    df = pd.DataFrame(data)
    df.to_excel('D:/random_numbers.xlsx', index=False)
    

    以上代码将生成的随机数保存为名为random_numbers.xlsx的Excel表格,并将该表格保存至D盘目录下。

    请注意,需要事先安装numpypandasmatplotlib库,可以使用以下命令进行安装:

    pip install numpy pandas matplotlib
    

    如果你没有权限在D盘目录下保存文件,可以将保存路径修改为可写的其他目录。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^