我在MATLAB文档中搜索了如何生成一个0或1的随机整数。
我偶然发现了randint和randi这两个函数。 randint似乎在我的MATLAB版本中已被弃用,尽管它在线文档中并且randi似乎只创建1和指定imax值之间的randoms数字。
我甚至创建了自己的randint函数来解决问题,尽管它在我的程序中运行效率不高,因为它用于大型数据集:
function [ints] = randint(m,n)
ints = round(rand(m,n));
end
是否有内置函数来创建一个0或1的随机整数,或者是否有更有效的方法在MATLAB中创建这样的函数?
答案 0 :(得分:6)
这似乎要快一点:
result = rand(m,n)<.5;
或者,如果您需要double
的结果:
result = double(rand(m,n)<.5);
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.
答案 1 :(得分:4)
randi
是要走的路,只需将边界定义为 1 和 0
A = randi([0 1], m, n);
答案 2 :(得分:0)
随机生成0或1 ......
X =圆(RAND)