如何用matlab 随机生成1-16的整数,直到不重复
作者&投稿:宿安 (若有异议请与网页底部的电邮联系)
猜测楼主想要的是随机生成不重复的整数吧?如果是浮点数,直接用rand就行,重复的概率极低。
楼上的两个回答,一个生成的是浮点数,另一个不能保证抽样的均匀性(从结果可以看到,数据集中在10-30之间)。
生成不重复整数的问题其实是一个不放回随机抽样的问题,可以使用下面的这个函数:
function s = sampling(R, n)% 选择抽样,R为记录集合,n为抽取的样本数% 算法参考:D. E. Knuth, TAOCP, vol.2, pp142,稍有改动 % 编写函数时用的测试数据if ~nargin R = 1 : 8; n = 4;end N = length(R);t = 0; % 处理过的记录总数m = 0; % 已选得的记录数 while 1 U = rand; if (N-t)*U = n, break, end end t = t + 1;end
调用实例:
>> sampling(1:100,8)ans = 8 21 24 31 42 85 91 92
a=randperm(30);%生成1到30的随机排列
a=a(1:15);
这满足你简单的要求
生成随机数的时候同时记录已经生成过的随机数即可。
generated=zeros(16,1);
count=0;
i=0;
while (count<16)
i=i+1;
t=round(16*rand()+0.5);
if generated(t)==0
generated(t)=1;
count=count+1;
end
end
display(['Total:',num2str(i)]);
我运行了45次,统计出来i的平均是53.911。
茹段川芎: matlab没有现成函数可生成-1到1的随机矩阵,但是,可通过语句生成,如: a=-1;b=1; r = (b-a).*rand(10,1) + a 结果是: r =-0.80570.64690.3897-0.36580.9004-0.9311-0.1225-0.23690.53100.5904
五峰土家族自治县13475514218: matlab 中怎样产生一个1到100的随机整数 - ?
茹段川芎: 可以用randperm( )随机整数函数,比如: 1、randperm(100,1) %产生一个100以内的随机整数 2、randperm(100,3) %产生三个100以内的随机整数MATLAB[1] 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据...
五峰土家族自治县13475514218: 如何随机取1和 - 1两个数 - ?
茹段川芎: x=rand(1,10);%产生10个(0,1)的随机数 y=[]; for i=1:10 if x(i)y(i)=-1; else y(i)=1; end y %-1,1产生的概率相等
五峰土家族自治县13475514218: 怎么用matlab产生 - 1到1间随机分布的n阶矩阵 - ?
茹段川芎:[答案] 2*rand(n)-1
五峰土家族自治县13475514218: 怎样用matlab随机生成一个只有 - 1,1元素的矩阵? - ?
茹段川芎: 楼上的方法有问题,产生的是0,-1,1的随机矩阵,不是-1和1 应该改成: clear; clc; a=randint(3,2); %产生由0和1组成的,m*n维随机矩阵 a(find(a==0))=-1; %%%% 转换成-1和1的矩阵
五峰土家族自治县13475514218: 如何用matlab产生0到1之间的随机小数 - ?
茹段川芎: MATLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数函数的语法为rand(n),rand(m,n),其结果分别产生一矩阵含n*n个随机数和一矩阵含m*n的随...
五峰土家族自治县13475514218: matlab中如何产生等概率的信号1和 - 1的函数 - ?
茹段川芎: 可以使用rand函数产生[0, 1]之间均匀分布的随机数,然后再使用0.5作为分离点就行.比如:data = rand(1, 100); data(data data(data >= 0.5) = 1;
五峰土家族自治县13475514218: 如何用matlab产生一个随机数,随机数只能取 - 1和1 - ?
茹段川芎: round(rand)*2-1 产生0-1之间的数,四舍五入为0或1,然后乘以2,减去1,得到的不是-1就是1祝你学习愉快!
五峰土家族自治县13475514218: 如何用Matlab产生1到10之间3个不同的随机数 - ?
茹段川芎: <% Function RndNumber(MinNum,MaxNum) Randomize RndNumber=int((MaxNum-MinNum+1)*rnd+MinNum) RndNumber=RndNumber End Function Function RndN(N,a,b) '产生一个长度为N的不重复的随机字符串,a为最小值,b为最大值 x = ...
五峰土家族自治县13475514218: 如何用matlab产生 - 1和1随机序列,急急急~~~ - ?
茹段川芎: for i=1:n a(i)=rand[0,1] end 很久没用matlab了 不知道这种写法对不对 你查查吧 产生随机数就是用rand函数 至于是用[]还是()我忘了,随机序列需要用数组来承接 也便于以后的运用