【matlab】离散化启发式算法编程中生成随机数

本文介绍了在编程中常用的不同类型的随机数生成方法,包括randi、randperm和rand函数的应用及性能对比,适用于离散化编程和启发式算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在离散化编程,特别是启发式算法编程中,经常用到随机整数列的产生,然后再对整数列进行操作和迭代。下面介绍几个常用的函数。


1.randi函数

randi函数用于产生一定范围的随机数,而且同一个随机数可以再一次出现。

比如:

 randi(5,5) %生成数字为1-5的5*5的矩阵


ans =


     3     1     5     1     2
     1     5     1     1     5
     5     2     3     2     1
     1     4     5     3     3
     4     1     3     5     3


randi(5,5,2)  %生成数字为1-5的5*2的矩阵


ans =


     4     4
     2     3
     2     3
     4     5
     3     4


 randi(5)  % 生成1-5的一个随机数


ans =


     3


randi([-5,5],5) %生成[-5,5]大小为5*5的矩阵


ans =


    -4    -4    -2    -3     4
    -4    -5    -5     4    -1
     3    -4     5     3     0
     4    -5    -4     1     2
     3    -3     5    -3    -3


2. randperm函数


randperm函数主要生成不重复数字的序列,为一维数组。主要用于一些初始解的产生。

randperm(5)


ans =


     4     5     3     2     1


randperm(5,3)  % 1-5的数字取出不重复的三个


ans =


     4     2     5

注意:randi(5,1,3)  %产生可以有重复数字的序列


ans =


     4     2     4


3. rand 函数

虽然rand函数只能生成0-1的随机数,但是可以通过round,floor等取整函数转化为整数随机数。 

round(rand(m)*(n-1)+1)   生成m*m矩阵,1-n

floor(rand(m)*n+1) 生成m*m矩阵,1-n



 round(rand(5)*9+1)


ans =


    10     4     4     3     8
     6     5     4     2     3
     1    10     8     7     1
     3     4     8     3     5
     4     7     9     4     5


floor(rand(5)*10+1)


ans =


     7     6     8    10     7
     4     2     6     1     1
     4     5     8     6     2
     3     5     6     4     3
    10     8     9     3     7


4. 时间比较

比较 randi函数和rand函数同样生成5*5的矩阵,每个元素大小从1-10. 分别运行10000000次,比较其时间


tic

for i=1:10000000

    randi(10,5);   %Elapsed time is 14.953315 seconds.

    floor(rand(5)*10+1);  %Elapsed time is 9.559714 seconds.

end

toc


总结:如果需要大规模的产生随机数,使用rand还是一个不错的选择,但是对于数据量不是很大的情况,randi使用起来是很方便的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值