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