使用Matlab产生不重复的随机整数(转载)

在编写启发式算法时,经常面临产生随机数的情况(比如随机产生两个或者三个不同的位置用于后续操作)。困扰我的产生不重复随机数产生有比较简便的方法,记录如下。

转载两篇博文。

1. matlab之生成不重复的随机整数 网址:https://blog.csdn.net/yq_forever/article/details/75093433

使用rand函数生成小数再取整的方法往往会造成数据重复。

而Matlab自带函数randperm(n)可以产生1到n的整数的无重复的随机排列,利用它就可以得到无重复的随机数。例如:

randperm(n):产生一个1到n的随机顺序。 
>> randperm(10)
ans =
     6     4     8     9     3     5     7    10     2     1

那么我们要想得到6个(1,10)之间的随机数的话,只需要

a=randperm(1:10)

再取其前6个即可。

a(1:6)
--------------------- 
作者:Regnaiq 
来源:CSDN 
原文:https://blog.csdn.net/yq_forever/article/details/75093433 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

第二篇:Matlab产生某一范围的不重复的随机数  网址:https://blog.csdn.net/Michael__Corleone/article/details/79537978

 

问题描述:假如我现在要产生50-80范围的不重复的10个数。 
使用函数:randperm(m, n),函数作用:从1-m中随机产生n个不重复的数。 
问题解决:randperm(31, 10) + 49

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值