我需要生成给定数量N的给定大小的向量,每个向量均匀分布0和1。
这就是我现在正在做的事情,但是我注意到分布在半个1和半个0时达到峰值,这对我正在做的事情没有好处:
a = randint(1, sizeOfVector, [0 1]);
unifrnd
function看起来很有希望,但是我无法理解如何输出那个大小的二进制向量。
我是否可以使用unifrnd
函数(如果是这样,我将如何欣赏!)或者是否有其他更方便的方法来获取这样的一组向量?
任何帮助表示赞赏!
注1 :只是为了确定 - 这是实际要求的内容:
随机选择给定大小的N个向量 均匀分布在[0; 1]
上
注2 :我正在为元胞自动机生成初始配置,这就是为什么我只能有二进制值[0; 1]。
答案 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);