在Matlab中,如何产生区间在[-90 90]之间,满足高斯分布的随机数?

singtimese 1年前 已收到1个回答 举报

重型cc兔 春芽

共回答了17个问题采纳率:88.2% 举报

matlab用randn生成(-inf,inf)区间内的标准高斯分布(μ = 0,σ = 1)的随机数,而且,一般来说,这样生成的随机数不会超出区间[-3,3],因为随机数在区间[-3,3]的概率为99.8%.那么在[-90,90]之间的概率呢?我没有算,想来应该会超过0.99999
所以你直接用randn生成随机数,不必担心会超出[-90,90].
但是你的目的恐怕不是这样的,你说清楚一些,也许能解决.

1年前 追问

7

singtimese 举报

我想让我的机器人往他正前方随机走,不回头,每次可以有转弯,但是转弯的角度的绝对值不能超过90°,但是往正前方(0°)走的概率最大(所以要0均值)。综上所述,我要生成[-90,90]的类似于高斯分布的随机数。

举报 重型cc兔

哦,简单一点说,你不是一定要高斯分布的随机数,那么你可以用弧度制,用randn(1)生成随机数,然后判断生成的数是否在[-pi/2,pi/2]之间,如果在,那么就取它,如果不在,再用randn(1)生成随机数,再次判断,……,用一个while循环就好了。帮你写一下: while 1 a = randn(1); if a<=pi/2&&a>=-pi/2 break; end; end;
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.018 s. - webmaster@yulucn.com