Представьте, что вы проводите дебаты с участниками н и хотите разделить их пополам совершенно случайным образом.
Это можно сделать, создав список участников, случайным образом перетасовав этот список, а затем заставив первых участников н/2 участвовать в дебатах в команде.
Однако, если бы это обсуждение было особенно важным, мы хотели бы убедиться, что созданные нами команды являются случайными доказуемо таким образом, чтобы они были видны всем. Мы хотим показать, что созданные нами команды не являются прямым результатом каких-либо человеческих решений. Будет ли способ сделать это?
Я считаю, что эта проблема сводится к проблеме создания начального числа для генератора случайных чисел, основанного на состоянии мира в определенное время, но я не уверен. Это проблема, с которой инженеры-программисты уже сталкивались раньше, и есть ли для этого API?
Я думал, что примера с дебатами будет достаточно. Можете пояснить, что тут непонятного? Эта идея может иметь множество применений в программной инженерии, и мне она нужна для одного из моих проектов, поэтому я публикую ее здесь.
Что вы пробовали? Что вы исследовали? Какие языки? Источники? Это скорее очень широкий вопрос, который трудно сузить, он может помочь конкретизировать вопрос с помощью конкретных примеров кода.
Я не смог исследовать эту проблему, потому что ее невероятно сложно найти в Google/поиске. Вы просто получаете результаты для онлайн-ГСЧ и вопросов уровня CS1 о том, как создавать случайные числа на определенных языках. Лучшее решение, которое я могу придумать, — это использовать цену закрытия для конкретной акции в определенный день, чтобы засеять ГСЧ. Этот вопрос не имеет ничего общего с конкретными языками и/или фрагментами кода. Это больше о том, как решить конкретную проблему, связанную со случайными числами, которая может возникнуть в разработке программного обеспечения и где-либо еще.
Вы можете иметь в виду поддающиеся проверке случайные числа, которые представляют собой случайные числа, сгенерированные с использованием данных, которые будут раскрыты вместе со всей информацией, необходимой для их проверки. Я знаю, что наиболее активное использование поддающихся проверке случайных чисел на практике встречается в процедуре отбора в Комитет по назначениям Инженерной группы Интернета (или сокращенно NomCom). RFC 3797 описывает эту процедуру выбора, а также то, как в целом работает проверяемый случайный выбор.
Другой родственной технологией является проверяемая функция задержки, которая представляет собой функцию, которая требует заметного времени для вычислений (например, для хэширования общедоступных данных в случайное число), но для которой легко проверить правильность вывода. Это описано, в частности, в двух работах:
Это именно то, что я искал. Я не знал, что этот термин существует, и мне приятно иметь слово, которое можно связать с этой концепцией. Ссылка RFC 3797 - отличное чтение ... спасибо!
Пожалуйста, предоставьте короткий, но полный пример, демонстрирующий проблему?