如何在MATLAB中生成0或1的随机整数

Mic*_*ron 5 random matlab

我搜索了MATLAB文档,了解如何生成一个0或1的随机整数.

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

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

function [ints] = randint(m,n)
ints = round(rand(m,n));
end
Run Code Online (Sandbox Code Playgroud)

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

Lui*_*ndo 6

这似乎有点快:

result = rand(m,n)<.5;
Run Code Online (Sandbox Code Playgroud)

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

result = double(rand(m,n)<.5);
Run Code Online (Sandbox Code Playgroud)

示例m = 100,n = 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.
Run Code Online (Sandbox Code Playgroud)