【发布时间】:2018-04-28 23:40:05
【问题描述】:
b=round(rand(1,20));
我不想使用函数rand,而是想知道如何创建这样的系列。
【问题讨论】:
-
你想像你的例子那样得到零和一吗?
标签: matlab
b=round(rand(1,20));
我不想使用函数rand,而是想知道如何创建这样的系列。
【问题讨论】:
标签: matlab
这是一个非常有趣的问题。实际上,在我看来,最简单的方法是使用Linear-feedback Shift Register。您可以在谷歌上找到大量示例和实现(here 来自另一个 SO 问题)。
这是一个基于this code 的快速 Matlab 演示:
b = lfsr(20)
function r = lfsr(size)
persistent state;
if (isempty(state))
state = uint32(1);
end
if (nargin < 1)
size = 1;
end
r = zeros(size,1);
for i = 1:size
r(i) = bitand(state,uint32(1));
if (bitand(state,uint32(1)))
state = bitxor(bitshift(state,-1),uint32(142));
else
state = bitshift(state,-1);
end
end
end
【讨论】: