回 帖 发 新 帖 刷新版面

主题:求救求救,一个关于随机数的问题

问题是这样的,
我现在要生成在(0,8)区间内正态分布的整数,均值为4,偏差为1,该如何写代码呢?

我只会用randn移动均值,
mean=4;
Std=1;
Normal=rand(1,50)*Std+mean;
但是如此生成的有负数,而且不是整数,再取绝对值,取整的话,那么均值其实已经变了.感觉思路歪了,但是又没有其他办法.

还求高手们给指点一下

回复列表 (共7个回复)

沙发

为什么没有人理偶啊, 难道偶的问题太小儿科,大侠们都不懈一看吗..呼救呼救

板凳

应该没有比之更合适的方法。另,在0-8范围内生成完全正态分布的整数随机数的说法也不太确切。

3 楼

你好,我也正在为这个事发愁,我们可以交流一下,我的msn:zhoubinwx@hotmail.com

4 楼

[quote]应该没有比之更合适的方法。另,在0-8范围内生成完全正态分布的整数随机数的说法也不太确切。[/quote]
可是这样生成的数有可能大于8啊,这是最郁闷的了

5 楼

可将不符合要求的数值截去,带来的问题是不完全符合正态。但在一个较小的数值段的整数本身是不可能完全符合正态的。

6 楼

mu=0.6; sigma=0.1;
x=mu+sqrt(sigma)*randn(4)
x =
    0.8311    0.7799    0.1335    1.0565
    0.7827    0.5192    0.5260    0.4890
    0.6127    0.4806    0.6375    0.7971
    0.8141    0.5064    0.6996    0.8527
产生均值为0.6,方差为0.1的4阶矩阵

而Y = rand(n)          %生成n×n随机矩阵,其元素在(0,1)内
正态分布的函数用randn这个

7 楼

y=fix(4+randn(1,10))
基本可以满足你的要求。
出现小于0或大于8的可能性极小。

我来回复

您尚未登录,请登录后再回复。点此登录或注册