Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在matlab上生成具有限制的随机向量时出现的问题_C++_Matlab_Random - Fatal编程技术网

C++ 在matlab上生成具有限制的随机向量时出现的问题

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 =

我有一个问题,我想生成一个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
结果:

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)
结果将与总体向量(在本例中为行向量)具有相同的单例维度。
只是提供另一种解决方案,让你与 RANSAMPLE()/<代码>联系。< /P>你想用C++或Matlab做这件事吗?为什么它被标记为两者?MATLAB是基于C++或C,是一个推荐的标签,抱歉如果我错了,需要道歉,只是试图确定你真正想要的。我会尝试告诉你我尝试,但当运行应用程序时,它崩溃了一行应该取代整个代码>通用()/代码>函数。