Это абсолютно невозможно!Количество возможных матриц составляет 2 140 , что составляет около 1,4e42.Однако учтите следующее ...
- Если бы вы генерировали две матрицы размером 14 на 10 в случайном порядке, вероятность того, что они будут одинаковыми, равна 1 в 1,4e42.
- Если бы вы сгенерировали 1 миллиард уникальных матриц 14 на 10, то вероятность того, что следующая сгенерированная вами матрица будет такой же, как и у одной из них, будет чрезвычайно мала: 1 в 1,4e33.
- Поток случайных чисел по умолчанию в MATLAB использует алгоритм Mersenne twister с периодом 2 19936 -1.Поэтому генератор случайных чисел не должен начинать повторяться в любое время в этот эон.
Ваш подход должен быть таким:
- Найдите компьютер, который никто никогда не хочет использоватьснова.
- Дайте ему как можно больше места для хранения ваших результатов.
- Установите на него MATLAB и запустите его.
Начните вычислять матрицы случайным образомвот так:
while true
newMatrix = randi([0 1],14,10);
%# Process the matrix and output your results to disk
end
- Уход
Поскольку комбинаций так много, вам не нужно сравнивать newMatrix
с любой из предыдущих матриц, посколькуотрезок времени, прежде чем повторение может произойти, астрономически велик.Скорее всего, ваша обработка будет остановлена в первую очередь по другим причинам, таким как (в порядке вероятности):
- Недостаточно места на диске для хранения результатов.
- Естьперебои в подаче электроэнергии.
- В вашем компьютере произошел смертельный аппаратный сбой.
- Вы скончались.
- Земля ушла.
- Вселенная медленно умирает тепловая смерть .
ПРИМЕЧАНИЕ: Хотя я и добавил немного юмора в приведенный выше ответ, я думаю, что проиллюстрировал одну полезную альтернативу.Если вы просто хотите отобрать небольшое подмножество возможных комбинаций (где даже 1 миллиард можно считать «маленьким» из-за большого количества комбинаций), вам не нужно проходить дополнительное время- и занимающие много памяти этапы сохранения всех уже обработанных матриц и сравнения с ними новых, чтобы убедиться, что вы не повторяете матрицы.Поскольку шансы на повторение комбинации очень малы, вы можете смело делать это:
for iLoop = 1:whateverBigNumberYouWant
newMatrix = randi([0 1],14,10); %# Generate a new matrix
%# Process the matrix and save your results
end