Во-первых, невозможно точно знать, является ли определенный конечный вывод «действительно случайным», поскольку, как вы указываете, возможен любой вывод .
Что можно сделать, это взять последовательность выходов и проверить различные измерения этой последовательности на предмет того, что является более вероятным. Вы можете получить некоторую оценку достоверности того, что алгоритм генерации работает хорошо.
Например, вы можете проверить вывод 10 различных перемешиваний. Присвойте каждой карточке число 0-51 и возьмите среднее значение карточки в позиции 6 по всем тасовкам. Среднее сходящееся значение составляет 25,5, поэтому вы будете удивлены, увидев здесь значение 1. Вы можете использовать центральную предельную теорему, чтобы получить оценку вероятности каждого среднего значения для данной позиции.
Но мы не должны останавливаться на достигнутом! Потому что этот алгоритм может быть обманут системой, которая чередует только два шаффла, которые предназначены для получения точного среднего 25,5 в каждой позиции. Как мы можем сделать лучше?
Мы ожидаем равномерного распределения (равной вероятности для любой данной карты) в каждой позиции по разным перемешиваниям. Таким образом, среди 10 перемешиваний мы могли бы попытаться проверить, что выбор «выглядит одинаково». Это в основном просто уменьшенная версия оригинальной проблемы. Вы можете проверить, что стандартное отклонение выглядит разумным, что минимальное значение разумно, а также максимальное значение. Вы также можете проверить, что другие значения, такие как ближайшие две карты (по нашим назначенным номерам), также имеют смысл.
Но мы также не можем просто добавить различные измерения, такие как это до бесконечности, поскольку, учитывая достаточную статистику, любой конкретный случай перемешивания будет казаться весьма маловероятным по какой-либо причине (например, это один из немногих случайных переходов, в котором карты X, Y, Z появляются в порядке). Итак, главный вопрос: какой набор измерений нужно выбрать? Здесь я должен признать, что не знаю лучшего ответа. Однако, если вы имеете в виду определенное приложение, вы можете выбрать хороший набор свойств / измерений для тестирования и работать с ними - похоже, именно так криптографы обрабатывают вещи.