我如何在两个数字之间生成一个随机数?

3,484次观看(过去30天)
我怎么得到两个数之间的随机数,比如我想要20-150之间的随机数,随机的,我知道最大值和最小值我想用matlab给我一个最大值和最小值之间的随机数
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2018年2月18日
约翰BG:
Rand()有效地生成一个范围为[0,2 ^53-1]的整数,如果结果为0则重试,然后将范围为[1,2 ^53-1]的整数除以2^53以得到随机值。在任何大于1的范围内,都不可能获得比这更高的精度。
对于小于1的值,有两个更高精度的随机生成器可用: //www.ru-cchi.com/help/matlab/math/creating-and-controlling-a-random-number-stream.html#brvku_2 Mlfg6331_64可以生成普通生成器无法生成的2^(-64)的一些倍数。
swb2712可以生成(0,1)范围内所有可能的可表示数字,包括低于1E-308的范围。但是,swb2712并没有生成等距的数字,它的平均值(一半的数字更少)是1.1187511096800310114936447973194400756064707301900610341407277499809417577457404262335600641705037948837541521801190921413996528949441220662428061113996528949488176068001939115032777045298590054193911503277704529859395e -154
只要你坚持双倍精度,你就不能 统一的 在任意范围(a,b)上的分布,精度在2^53中超过1个部分。例如,虽然(1,3)有超过2^53个可表示的数字,但2和3之间的数字与1和2之间的数字之间的距离并不相同。
任何使用surds都会使分布产生偏差。根号(兰特)低于0.5的几率超过70%。乘以pi或exp(1)不会增加精度。
如果您需要超过53位的精度,那么您可能应该切换到符号工具箱或文件交换中的多精度工具箱。

登录评论。

接受的答案

图像分析
图像分析 2018年2月18日
rand()的第二个例子是这样说的:
一般来说,你可以用公式r = a + (b-a).*rand(N,1)在区间(a,b)内生成N个随机数。
如果a=20, b=150,你就能得到你想要的。
r = 20 + (150-20) .* rand(N,1)
1评论
约翰D 'Errico
约翰D 'Errico 2018年2月18日
两个答案当然都是有效的,这取决于你想要的是随机整数还是一致连续的样本。

登录评论。

更多答案(4)

捕鸟者
捕鸟者 2018年2月18日
兰迪([150])
1评论
约翰D 'Errico
约翰D 'Errico 2018年2月18日
两个答案当然都是有效的,这取决于你想要的是随机整数还是一致连续的样本。

登录评论。


尼莎Bharti
尼莎Bharti 2022年1月12日
在[a,b]之间生成一个随机数:
R = a + (b-a)*rand();
生成N个数字:
r = a + (b-a)*rand(1,N);
希望有帮助!
2的评论
1月
1月 2022年10月23日
是的,它确实有效。这个公式在4年前就已经由Image Analyst提供了。

登录评论。


埃尼Hidisoglu
埃尼Hidisoglu 2021年1月29日
你好我的朋友,
你可以使用下面的代码来生成你想要的两个数字之间的随机数;比如在20-150之间,
试验= [20:1:150];
R = randperm(长度(试验));
试验=试验(r)
我想这对你很有用……
最好的祝愿
5个评论
1月
1月 2021年1月30日
编辑:1月 2022年10月23日
@Enis Hidisoglu 用一个巨大的价值清单来创造价值不是一个好主意 试验= 20:0.001:150 只是为了从中得到一些元素。请看图片分析师的回答:
r = 20 + (150-20) .* rand(N, 1)
这直接产生具有更高精度的随机值。

登录评论。


答摩克义斯
答摩克义斯 2021年7月25日
生成范围内的随机数,允许类型规格以及所需的输出大小:

类别

了解更多随机数生成帮助中心而且文件交换

标签

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map