Matlab中随机数列的问题

产生一个包含7个1,7个2,3个3,3个4的随机数列,相同的数字不在相邻位置出现。
已经写了一部分,但是不会处理“相同数字不在相邻位置出现”的问题

dataprac=[ones(1,7),2*ones(1,7),3*ones(1,3),4*ones(1,3)]; %产生“1”7个,“2”7个,“3”3个,“4”4个
indexprac=randperm(length(dataprac)); %产生一个1到10的一个随机排列
trialprac=dataprac(indexprac); %最后再将data中的数按index打乱,最后成为trial呈现的条件

dataprac=[ones(1,7),2*ones(1,7),3*ones(1,3),4*ones(1,3)]; % 产生“1”7个,“2”7个,“3”3个,“4”4个
checkNum = 1; % 检验数初始化
while checkNum~=0
indexprac=randperm(length(dataprac)); % 产生一个1到10的一个随机排列
trialprac=dataprac(indexprac); % 最后再将data中的数按index打乱,最后成为trial呈现的条件
tmpprac = [trialprac(2:end) trialprac(1)]; % 产生新序列
checkNum = sum(trialprac==tmpprac); % 逐位比较两序列是否有相等元素
end
trialprac
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-04
运行下面的代码就都有了。
x=10*rand(1,1000);
t=1:1000;
plot(t,x);
Max_rand=max(x);
Min_rand=min(x);
Mean_rand=mean(x);
segma=std(x);追问

感觉仍然没解决问题。。。。相同的数字不在相邻位置

第2个回答  2019-08-04
发生过孤独都会德语刚才大姑过得雨花擦导入还发地图还发当然一哈放大突发属于

Matlab中随机数列的问题
dataprac=[ones(1,7),2*ones(1,7),3*ones(1,3),4*ones(1,3)]; % 产生“1”7个,“2”7个,“3”3个,“4”4个 checkNum = 1; % 检验数初始化 while checkNum~=0 indexprac=randperm(length(dataprac)); % 产生一个1到10的一个随机排列 trialprac=dataprac(indexprac)...

MATLAB中,怎样把一组给定的数据随机排列?
numel(x)获得变量长度 randperm(n)产生长度为n的随机数列 如:randperm(4)ans= 3 2 1 4 X(...) 取得X中相应元素产生新数列

MATLAB中,怎样把一组给定的数据随机排列?
使用函数randperm()即可实现。例:A = [7,6,3,9,10];% 试验矩阵【用于试验,矩阵元素为待随机排列的数据】randIndex_A = randperm(5);% 生成1到5这几个数的随机排列 B = A(randIndex_A); % 随机排列后的矩阵 每一行代码运行结果:>>A = [7,6,3,9,10]A = 7 6 3 9 10 >>ran...

如何用Matlab语言编写在1~14的数中随机选14个互不相同的数!_百度知 ...
1),(14:-1:2)',zeros(13,12)];%s为记录填数的堆栈,其中为0的位置表示未填数%初始时s共有13行,第一列都为1,第二列为2-14out=[];%储存结果while ~isempty(s) %如果栈不空 now=s(end,:);

如何用matlab产生一0、1随机数列
1、首先启动matlab,新建一个函数文件。2、在弹出的编辑窗口中输入代码。3、保存该函数,注意文件命名要与函数名相同。4、文件保存的位置应该与搜索路径相同,否则使用该函数时将会因为找不到该函数文件而出错。5、最后再命令行窗口中输入命令,get01(m,n)就可以产生m行n列的随机0-1矩阵了。

matlab 关于rand的问题
计算机里的随机数只是伪随机 都是根据一定的算法模拟生成的 前一个随机数和后一个随机数直线是根据公式算出来的 所以一旦确定了第一个随机数,那么后面一串的随机数序列就确定了 我们平时直接调用rand的时候就是一个一个地从随机数序列中取数出来用 在一定的范围内,这个数列显示类似出0,1之间均匀分布...

matlab如何产生1到5中不含4的随机数列(即1,2,3,5四个数随机排序)
实际就是产生1,2,3,5四个数的随机数列,如果是均匀分布,那么每个数的概率是1\/4 所以,产生[1,2,3,5]或者[2,3,4,5]或者其他的不含某个数的序列,本身并没有本质的区别 所以完全可以 k=randi([1,4],[m,n]);k(k==4)=5;效率最高~...

采用matlab生成随机数列,证明将一枚均匀硬币掷N次,当N很大时,正面出现...
r=rand(1,N);生成了N个在0~1之间的随机数。for i=1:N if r(i)>0.5 x=x+1;end end 这一段判断了这N个数大于0.5的个数x。最后x\/N就是概率。说白了就是大于0.5是正面,小于0.5是反面。新建个文件coin.m,下面的复制进去 function f=coin(N)r=rand(1,N);x=0;for i=1:N...

求助matlab simulink,输出随机1、0数列,0概率要求0.001
2)的要求,0的概率设置成0.001,采样时间设置成1e-5 就可以了 如果你一定要保证每1000采样里面必须出一个0,且只能出一个0,就用计数器模块0~999计数,采样设置成1e-5,然后用randint(1,1,1000),产生一个0~999的随机数,采样时间设置成1e-3,两路信号作关系运算,求相等,再取反。

如何用matlab求一维随机数?
X=logspace(x1,x2) 在x1和x2之间生成50个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(50)=10x2 X=logspace(x1,x2,n) 在x1和x2之间生成n个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(n)=10x2 注:向量的的转置:x=(0,5)’

相似回答