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

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

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使用起来是很方便的选择。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值