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

时间:2014-07-30 16:07:35

标签: matlab random

我在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中创建这样的函数?

3 个答案:

答案 0 :(得分:6)

这似乎要快一点:

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 :(得分:4)

randi是要走的路,只需将边界定义为 1 0

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

答案 2 :(得分:0)

随机生成0或1 ......

X =圆(RAND)