Matlab中二进制值的均匀分布

时间:2010-03-14 12:36:23

标签: matlab binary

我需要生成给定数量N的给定大小的向量,每个向量均匀分布0和1。

这就是我现在正在做的事情,但是我注意到分布在半个1和半个0时达到峰值,这对我正在做的事情没有好处:

a = randint(1, sizeOfVector, [0 1]);

unifrnd function看起来很有希望,但是我无法理解如何输出那个大小的二进制向量。

我是否可以使用unifrnd函数(如果是这样,我将如何欣赏!)或者是否有其他更方便的方法来获取这样的一组向量?

任何帮助表示赞赏!

注1 :只是为了确定 - 这是实际要求的内容:

  

随机选择给定大小的N个向量   均匀分布在[0; 1]

注2 :我正在为元胞自动机生成初始配置,这就是为什么我只能有二进制值[0; 1]。

2 个答案:

答案 0 :(得分:2)

使用{0,1}中的元素生成1个随机向量:

unidrnd(2,sizeOfVector,1)-1

其他变种类似。

答案 1 :(得分:0)

如果您希望统一分布0和1,则需要使用randi。但是,根据要求,我认为向量可以具有实际值,您可以使用rand

%# create a such that each row contains a vector

a = randi(1,N,sizeOfVector); %# for uniformly distributed 0's and 1's

%# if you want, say, 60% 1's and 40% 0's, use rand and threshold
a = rand(N,sizeOfVector) > 0.4; %# maybe you need to call double(a) if you don't want logical output

%# if you want a random number of 1's and 0's, use
a = rand(N,sizeOfVector) > rand(1);