В отсутствие специального оборудования компьютеры не могут генерировать случайные числа. Они используют алгоритмы для генерации псевдослучайных чисел, которые называются генераторами псевдослучайных чисел ("PRNG").
В случае Matlab он использует Mersenne Twister в качестве генератора по умолчанию .
Связанная запись в Википедии прекрасно суммирует сильные и слабые стороны Mersenne Twister.
Из-за того, как работает PRNG, последующие выходы PRNG зависят от . Или, как предположил Джеймс Полк, точнее сказать, что последующие значения зависят от внутреннего состояния, которое изменяется детерминистическим образом при каждом вызове.
Если вы повторно запустите PRNG с тем же значением, он выдаст ту же последовательность чисел, что и раньше. Смотрите пример ниже в Python (который также использует Mersenne Twister).
In [1]: import random
In [2]: random.seed('foobar')
In [3]: [random.randint(0, 255) for j in range(15)]
Out[3]: [128, 127, 178, 80, 112, 31, 1, 234, 24, 206, 253, 213, 6, 215, 16]
In [4]: random.seed('foobar')
In [5]: [random.randint(0, 255) for j in range(15)]
Out[5]: [128, 127, 178, 80, 112, 31, 1, 234, 24, 206, 253, 213, 6, 215, 16]
И со временем последовательность повторится. Это называется «период» PRNG.
Если этот PRNG только что был запущен, может пройти некоторое время, прежде чем он выдаст хороший случайный результат из-за большого внутреннего состояния. Вы должны запустить тесты, чтобы увидеть, так ли это в Matlab. Возможно, разработчики Matlab имели дело с генерацией и отбрасыванием значительного количества случайных чисел при инициализации генератора.
Чтобы проверить это, сгенерируйте несколько блоков по 1 КБ случайных байтов, используя matlab.
Затем используйте, например, dieharder или ent , чтобы проверить и сравнить случайность последующих блоков.