基于正态分布指定范围内的随机数生成算法

您所在的位置:网站首页 excel生成标准正态分布的1000个随机数 基于正态分布指定范围内的随机数生成算法

基于正态分布指定范围内的随机数生成算法

2024-01-23 09:16| 来源: 网络整理| 查看: 265

1、需求背景

生成一个范围(n到m,例如100到150)的随机数,但不是纯粹随机(均匀分布)的,想要的结果是基于正态分布。另外想要数字“聚集”在125左右。

生成符合正太分布的随机数不难,但是如何达到我所要求的范围?

2、分析与代码

标准正态分布的平均值为0,标准差为1;如果要使用均值m和偏差进行分布s,只需乘以s,然后加m。由于理论上的正态分布是无限的,因此如果不明确拒绝超出范围的数字,就无法对范围(例如100到150)进行硬性限制,但是可以通过适当选择偏差来确保(例如)您的数字的99%将在此范围内。

大约99.7%的总数处于+/- 3个标准差之内(3σ),因此,如果您选择的是大约(25/3 == 3σ),则它应能正常工作。

所以你想要像这样的东西: (normal * 8.333) + 125  (标准正态分布变换到正态分布)

import numpy as np import matplotlib.pyplot as plt from math import sqrt # # bi = np.random.binomial(n=100, p=0.5, size=200) # n = np.random.normal(100*0.5, sqrt(100*0.5*0.5), size=500) # # # # plt.hist(bi, bins=20, normed=True); # plt.hist(n, alpha=0.5, bins=20, normed=True); # plt.show(); # print() from scipy.stats import truncnorm def get_truncated_normal(mean=0, sd=1, low=0, upp=10): return truncnorm( (low - mean) / sd, (upp - mean) / sd, loc=mean, scale=sd) X1 = get_truncated_normal(mean=2, sd=1, low=1, upp=10) X2 = get_truncated_normal(mean=5.5, sd=1, low=1, upp=10) X3 = get_truncated_normal(mean=5000, sd=1000, low=1000, upp=10000) import matplotlib.pyplot as plt fig, ax = plt.subplots(3, sharex=True) ax[0].hist(X1.rvs(10000), normed=True) ax[1].hist(X2.rvs(10000), normed=True) _ = X3.rvs(100000) ax[2].hist(_, normed=True) plt.show() np.savetxt("result.txt", [int(j) for j in _], fmt='%d');

3、数据验证

Refer:

[1] How to get a normal distribution within a range in numpy?

https://stackoverflow.com/questions/36894191/how-to-get-a-normal-distribution-within-a-range-in-numpy

[2] How to generate a random normal distribution of integers

https://stackoverflow.com/questions/37411633/how-to-generate-a-random-normal-distribution-of-integers

[3] Random number within a range based on a normal distribution

https://stackoverflow.com/questions/2751938/random-number-within-a-range-based-on-a-normal-distribution

[4] python模拟常用分布

https://blog.csdn.net/howhigh/article/details/78007317

 

转自:https://my.oschina.net/leejun2005/blog/76984



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3