C++ 在matlab上生成具有限制的随机向量时出现的问题
我有一个问题,我想生成一个4列1行的表,整数在0到9之间,不重复,每次运行都是随机的 到达这里,但我有一个问题,我总是在第一个元素中生成一个0。我不知道如何设定0-9的限制 有人能帮我吗 功能代码:C++ 在matlab上生成具有限制的随机向量时出现的问题,c++,matlab,random,C++,Matlab,Random,我有一个问题,我想生成一个4列1行的表,整数在0到9之间,不重复,每次运行都是随机的 到达这里,但我有一个问题,我总是在第一个元素中生成一个0。我不知道如何设定0-9的限制 有人能帮我吗 功能代码: function [ n ] = generar( ) n = [-1 -1 -1 -1]; for i = 1:4 r=abs(i); dig=floor((r-floor(r))*randn); while find (n =
function [ n ] = generar( )
n = [-1 -1 -1 -1];
for i = 1:4
r=abs(i);
dig=floor((r-floor(r))*randn);
while find (n == dig)
r=r+1;
dig=dig+floor(r-randn);
end
n(i)=dig;
end
end
generar()
ans =
0 3 9 6
generar()
ans =
0 2 4 8
结果:
function [ n ] = generar( )
n = [-1 -1 -1 -1];
for i = 1:4
r=abs(i);
dig=floor((r-floor(r))*randn);
while find (n == dig)
r=r+1;
dig=dig+floor(r-randn);
end
n(i)=dig;
end
end
generar()
ans =
0 3 9 6
generar()
ans =
0 2 4 8
我不知道这篇文章是否重复,但我需要帮助解决我的具体问题。因此,假设您需要matlab,因为您提供的代码是matlab,您可以简单地执行以下操作:
randperm(10, 4) - 1
这将从
0-9
中得到4个唯一的随机数,另一种方法是randsample(n,k)
,其中n
是一个整数,然后从总体1:n
中抽取一个大小为k
的随机样本(作为列向量)。因此,对于您的案例,您可以通过以下方式获得结果:
randsample(10, 4)' - 1
它从总体中抽取4个随机数,不进行替换,所有随机数都具有相同的权重。这可能比randperm(10,4)-1慢,因为它的真正优势在于能够传递总体向量以获得更复杂的示例
或者,您可以使用randsample(pop,k)
调用它,其中pop
是您想要绘制大小为k
的随机样本的总体向量。因此,对于您的情况,我们可以:
randsample(0:9, 4)
结果将与总体向量(在本例中为行向量)具有相同的单例维度。
只是提供另一种解决方案,让你与