【问题标题】:How to generate a random integer that is either 0 or 1 in MATLAB如何在 MATLAB 中生成 0 或 1 的随机整数
【发布时间】:2014-09-22 09:11:08
【问题描述】:

我在 MATLAB 文档中搜索了如何生成 0 或 1 的随机整数。

我偶然发现了 randint 和 randi 这两个函数。 randint 似乎在我的 MATLAB 版本中已被弃用,尽管它位于在线文档中,并且 randi 似乎只创建介于 1 和指定 imax 值之间的随机数。

我什至创建了自己的 randint 函数来解决这个问题,尽管它在我的程序中运行效率不高,因为它用于大型数据集:

function [ints] = randint(m,n)
ints = round(rand(m,n));
end

是否有内置函数可以创建一个 0 或 1 的随机整数,或者是否有更有效的方法在 MATLAB 中创建这样的函数?

【问题讨论】:

    标签: matlab random


    【解决方案1】:

    这似乎有点快:

    result = rand(m,n)<.5;
    

    或者,如果您需要double 的结果:

    result = double(rand(m,n)<.5);
    

    m = 100n = 1e5 的示例(Matlab 2010b):

    >> tic, round(rand(m,n)); toc
    Elapsed time is 0.494488 seconds.
    
    >> tic, randi([0 1], m,n); toc
    Elapsed time is 0.565805 seconds.
    
    >> tic, rand(m,n)<.5; toc
    Elapsed time is 0.365703 seconds.
    
    >> tic, double(rand(m,n)<.5); toc
    Elapsed time is 0.445467 seconds.
    

    【讨论】:

    • +1 主要是因为我不得不使用它,或者更确切地说在这里偷了它 - stackoverflow.com/a/25042451/3293881,所以谢谢! :)。顺便说一句,希望没关系!
    • &lt;.5 是最快的,因为我认为它只是执行一个汇编 JL 而其他的都是由一堆指令组成的。
    【解决方案2】:

    randi 是要走的路,只需定义 10

    的边界
    A = randi([0 1], m, n);
    

    【讨论】:

      【解决方案3】:

      随机生成 0 或 1...

      x=round(rand)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多