创建随机二进制序列,其中last和first元素等于1

时间:2015-06-30 22:37:56

标签: matlab random

我使用rand(1,N)<=0.5来创建包含1和0的二进制序列。

N可以取0和以上的任何值。

我想要达到的目的是拥有与上述相同的功能,但要确保始终将第一个和最后一个元素设为1。

例如

对于N = 0 - >空数组

对于N = 1 - > [1]

对于N = 2 - > [11]

对于N = 3 - > [1 0 1]或[1 1 1]

对于N = 4 - > [1 0 0 1]或[1 0 1 1]或[1 1 0 1]或[1 1 1 1]

你看到了逻辑?有没有自动化的方法来实现这一目标?对于N = 2及以上,我猜[1 rand(1,N-2)<=0.5 1]有效,但我想要的东西也适用于N = 0和N = 1;

由于

2 个答案:

答案 0 :(得分:4)

可能最明确的方式是

switch N
case 0
    result = [];
case 1
    result = 1;
otherwise
    result = [1 rand(1,N-2)<=0.5 1];
end

但那个无聊,不是吗?那怎么样?

result = rand(1,N)<.5;
result(mod(1:end, end)<=1) = 1;

答案 1 :(得分:0)

您可以直接使用十进制数字的表示形式:

odd = (randi(2^(N-2)) + 2^(N-2)) * 2 - 1;    % random odd number
de2bi(odd, 'left-msb')