如何生成a到b范围内正态分布随机数?

例如需要生成1000个0.8到1.6范围的随机数,平均值是1.2,条件是数据越靠近1.2,随机数个数越多,越靠近两端即0.8和1.6,随机数个数越少,…
关注者
12
被浏览
37,210

4 个回答

首先,你没给正态分布的方差。

其次,正态分布是无边界的,所以有边界的随机数一定服从不是正态分布,而是截尾正态分布。

生成截尾正态分布,R里有package,“truncnorm”,对应的函数是

rtruncnorm(n = 1000, a = 0.8, b = 1.6, mean = 1.2, sd = 0.1)

R language

N = 1000

mu = (a+b)/2

sigma = ?

x = rnorm(N, mu, sigma)

题主需要定义一下sigma

另外这样rnorm生成的随机数可能比a小可能比b大,如果强制需要必须在a b之间的话,可以写个while loop。