c++ - 在 matlab 上生成具有限制的随机 vector 时出现问题

标签 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 == 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

这将为您提供 4 个从 0-9 中的唯一随机数。

关于c++ - 在 matlab 上生成具有限制的随机 vector 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25966132/

相关文章:

matlab - matlab中向量之间的比较

c++ - CERN 根目录 : Filling TBranches/TTree in a loop issue

c++ - 为什么 Visual Studio 显示多线程,即使我的 MFC 应用程序不是多线程的?

matlab - 在 MATLAB 中使用 `==` 运算符的奇怪结果

c - C 编程中对数组中的字符进行打乱

java - 如何在 Java 中重用随机种子以便 nextInt() 再次使用相同的值?

c++ - 使用 std::binomial_distribution 在范围之间生成随机数

c++ - 我应该上课而不是重复的 get/set 语句吗?

c++ - 未给出显式整数后缀时,参数 'typing' 的规则是什么?

arrays - Matlab中字符串的动态格式化