我想在间隔上创建两个随机整数,这些整数[1,n]
保证彼此不同.我觉得像
ri(1)=randi([1 n]);
ri(2)=randi([1 n]);
while ri(1)==ri(2)
ri(2)=randi([1 n]);
end
Run Code Online (Sandbox Code Playgroud)
你真的不是最顺利的事情.
一种方法是使用,randperm
以便生成n
从1
最多和包含枚举的值的随机排列n
,并仅返回结果的前两个元素:
ri = randperm(n, 2);
Run Code Online (Sandbox Code Playgroud)
较旧版本的MATLAB不支持以randperm
这种方式调用.旧版本只接受一个输入变量,默认情况下返回值的整个排列n
.因此,您可以randperm
使用一个输入版本调用,然后将子集调用到最终结果中以返回所需内容:
ri = randperm(n);
ri = ri([1 2]);
Run Code Online (Sandbox Code Playgroud)