我有一个问题,我想生成一个包含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 == 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
我不知道这篇文章是否重复,但我需要帮助解决我的具体问题。
答案 0 :(得分:1)
所以假设你想要matlab,因为你提供的代码是matlab,你可以这样做:
randperm(10, 4) - 1
这将为您提供0-9
中的4个唯一随机数。
答案 1 :(得分:0)
到达那里的另一种方法是randsample(n, k)
其中n
是一个整数,然后将从人口k
中抽取大小为1:n
的随机样本(作为一列向量)。所以对于你的情况,你会得到结果:
randsample(10, 4)' - 1
它从人口中抽取4个随机数而没有替换,并且都具有相同的权重。这可能比randperm(10, 4) - 1
慢,因为它的真正强度来自能够传递人口向量以获得更复杂的例子。
或者,可以使用randsample(pop, k)
来调用它,其中pop
是您要绘制大小为k
的随机样本的填充向量。因此,对于您的情况,可以这样做:
randsample(0:9, 4)
结果将具有与population-vector相同的单一维度,在这种情况下是行向量。
只是提供另一种解决方案,让您与randsample()
联系。