Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中生成一定范围内的随机数_Matlab_Random_Numbers_Integer - Fatal编程技术网

在MATLAB中生成一定范围内的随机数

在MATLAB中生成一定范围内的随机数,matlab,random,numbers,integer,Matlab,Random,Numbers,Integer,如何在MATLAB中生成13到20之间的随机数? 其中,100,1是所设计向量的大小,如果要查找均匀分布的伪随机整数,请使用: randi([13, 20]) 如果需要13到20之间的浮动随机数 (20-13).*rand(1) + 13 floor((21-13).*rand(1) + 13) 如果你需要一个介于13和20之间的整数随机数 (20-13).*rand(1) + 13 floor((21-13).*rand(1) + 13) 注意:通过将20替换为21来修复注释“此排除

如何在MATLAB中生成13到20之间的随机数?


其中,100,1是所设计向量的大小,如果要查找均匀分布的伪随机整数,请使用:

randi([13, 20])

如果需要13到20之间的浮动随机数

(20-13).*rand(1) + 13
floor((21-13).*rand(1) + 13)
如果你需要一个介于13和20之间的整数随机数

(20-13).*rand(1) + 13
floor((21-13).*rand(1) + 13)
注意:通过将20替换为21来修复注释“此排除20”中提到的问题。您还可以使用:

round(mod(rand.*max,max-1))+min

麻省理工教育是一个很好的资源,它帮助了我很多。randi是最好的选择,但是如果你对数字感兴趣,可以尝试使用rand的floor功能来获得你想要的

我画了一条数字线,得出了一个数字

楼层(兰德*8)+13

根据计算机上的均匀分布生成值 间隔[a,b]

      r = a + (b-a).*rand(100,1);

如果您希望随机生成特定范围内的所有数字,那么您可以尝试

r = randi([a b],1,d)
a
=起点

b
=终点


d
=要生成多少个数字,但请记住d应小于或等于
b-a

最佳解决方案是
randint
,但此函数会生成整数

您可以使用带有舍入功能的
rand

  r = round(a + (b-a).*rand(m,n));

这会在a和b之间产生实随机数,输出矩阵的大小为m*n

可能重复的可能重复需要更多信息…您希望它们在[13,20]之间连续吗?区间[13,20]或(13,20)等是否应该具有相同的可能性?你脑子里有分布吗?难道n=13+(rand(1)*7)不能给出均匀分布的伪随机整数吗?@user581544:除非你调用round(n),否则不会。@crowso实际上一点也不会。值13和20的概率是其他值的一半。用这个来看看我的意思:
hist(round(13+(rand(11000)*7)),8)
@SecretAgentMan这是一个均匀分布,但它在开放区间(0,1),所以0和1永远不会出现。在MATLAB中键入
help rand
。。。“返回一个N乘N的矩阵,其中包含从开放区间(0,1)上的标准均匀分布中提取的伪随机值。”13和20出现一半频率的更大原因是
舍入
舍入到最接近的整数。由于n的函数将给出大于13和@James的结果,我一定一直在考虑
randn
。你是对的:
rand
确实是从U(0,1)生成的。开放或闭合间隔的问题实际上并不重要,因为在[0,1]上生成任何数字的概率为零(包括端点)。概率密度函数定义在闭合区间[0,1]上。我不确定睡眠不足是什么导致了我之前的评论错误。感谢您的更正。不在[min,max]范围内,也不均匀分布,这是问题隐含的。模数通常很难预测,也很难用于生成随机数。一般来说,很容易以非随机模式结束。最好只使用
rand
@knedlsepp:为了通用性的目的,我提到min代表13,max代表20(这是隐含的!也许最好将问题编辑为min和max)。你能指出结果的概率分布是多少吗?@patrik:我没有检查该函数的实现。你能解释一下为什么我们在使用模时忽略了随机模式吗?你做过什么实验吗?@moksef我确实做过。我猜是这种无偏见的模式消失了。在大多数情况下,模数喜欢围绕一些特定的数字形成。这些通常取决于选择的号码。尝试使用函数生成一组数字。然后绘制直方图。试着对不同的数字重复这一点。特别是,尝试将
max-1
设置为二进制数和素数。我还没有尝试过这种算法,但猜测它们应该表现得更好。
randint
已经过时。在旧版本中,它需要通信工具箱。即使您使用的是旧版本的
randi
在设定范围内生成均匀分布的整数,也不要再使用此函数