Как мы можем создавать случайные числа без использования функции rand в matlab? - PullRequest
0 голосов
/ 29 апреля 2018
b=round(rand(1,20));

Вместо использования функции rand я бы хотел знать, как создавать такие серии.

1 Ответ

0 голосов
/ 29 апреля 2018

Это очень интересный вопрос. На самом деле, проще всего, на мой взгляд, использовать регистр сдвига с линейной обратной связью . Вы можете найти множество примеров и реализаций, гуглящих вокруг ( здесь - это вопрос другого SO).

Вот краткая демонстрация 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...