我搜索了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中创建这样的函数?
这似乎有点快:
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)