我该如何在MATLAB中生成介于13和20之间的随机数?
如果你正在寻找均匀分布的伪随机整数,请使用:
randi([13, 20])
hist(round(13 + (rand(1, 10000) * 7)), 8)
。 - Evgeni Sergeevhelp rand
...“返回一个N×N矩阵,其中包含从标准均匀分布的开区间(0,1)中抽取的伪随机值。”13和20出现一半的原因更大的原因是因为round
函数四舍五入到最近的整数。由于n函数的结果>13且<20,因此13和20错过了超过一半的机会。注意:我基于MATLAB R2017b提供这些信息。 - Jamesrandn
。你是对的:rand
确实从U(0,1)生成。开放或封闭间隔的问题在实际上并不重要,因为生成任何数字的概率都是零(包括端点)。概率密度函数定义在闭区间[0,1]上。不确定缺乏睡眠导致我以前的评论错误。感谢您的纠正。 - SecretAgentManr = 13 + 7.*rand(100,1);
其中100,1是所需向量的大小。
ocw.mit.edu是一个非常有用的资源,对我帮助很大。Randi是最好的选择,但如果你喜欢数字游戏,可以尝试使用floor函数与rand配合以获得所需结果。
我画了一条数轴,算出来是
floor(rand*8) + 13
从区间 [a, b] 上的均匀分布中生成值。
r = a + (b-a).*rand(100,1);
randint
,但此函数生成整数。rand
。 r = round(a + (b-a).*rand(m,n));
这将产生一个在a和b之间的真实随机数,输出矩阵的大小为m*n
randint
已过时。在旧版本中,它需要通信工具箱。即使您使用旧版本,也不建议再使用此函数。 - Sardar Usamar = randi([a b],1,d)
a
= 起始点
b
= 终点
d
= 你想要生成的数字数量,但请记住d应小于或等于b-a
(20-13).*rand(1) + 13
如果您需要一个介于13和20之间的整数随机数
floor((21-13).*rand(1) + 13)
你也可以使用:
round(mod(rand.*max,max-1))+min
rand
函数。 - patrikrand
已经做得相当不错了 :). - patrik