Дирекция информационных технологий и Институт радиоэлектроники и информационных технологий Уральского федерального университета рассказали о том, как проходил выбор обладателей ценных подарков викторины «ОПОРНЫЙ КРАЙ» и открыли для всех желающих исходный код генератора случайных чисел.
Цифровой сервис обеспечивал случайный выбор номеров с целью определения обладателей ценных подарков среди участников познавательной викторины «Опорный край».
В качестве генератора псевдослучайных чисел использовался вихрь Мерсенна. Он обеспечивает быструю генерацию высококачественных по критерию случайности псевдослучайных чисел и равномерное их распределение. Последовательности чисел успешно проходят статические тесты diehard, подтверждающие случайность выбора.
Одними из главных задач проекта было обеспечение защищенности сервиса от хакерских атак и стабильность его работы. Поэтому было реализовано десктопное приложение, которое работает на автономном компьютере без подключения к интернету и внешним API.
Список участников и их количество были неизвестны до начала выбора обладателей подарков. Поэтому во время разработки использовался тестовый csv-файл со списком из более чем 3 млн семизначных номеров. Весь список сохраняется в памяти приложения и используется для случайного выбора одного из номеров. Этот номер исключается из последующих выборок, что обеспечивает правило: один участник — один подарок.
Выбор обладателей автомобилей, квартир и мотоциклов происходил с помощью оператора по нажатию кнопки генерации номера и выбора приза на экране в соответствии с тем, что вытягивал помощник-ребенок из куба на сцене. А выбор 2000 смартфонов происходил полностью автоматически. По заданию заказчика он должен был происходить в течение получаса, поэтому настраивали случайный выбор 2000 участников за 20 минут. Во время разработки применялись разные подходы, но был выбран самый оптимальный для генерации участника раз в полсекунды без сбоев и задержек по времени.
Предусмотрены были и случаи сбоя приложения или компьютера: сервис постоянно сохранял свое состояние. Если приложение закроется, то при повторном запуске восстановится вся информация: какие участники уже были выбраны и какие подарки им соответствуют. На этапе выбора обладателей смартфонов сначала восстанавливается информация об уже выбранных участниках, а потом запускается продолжение выбора автоматически.
Сервис разрабатывался по требованиям некоммерческой организации «Свердловский областной благотворительный фонд» в течение двух месяцев командой из 10 человек (кураторы проекта, эксперты, руководитель проекта, архитектор проекта, менеджер проекта, разработчики, тестировщики). Разработанные прототип, на котором демонстрировался концепт и вся логика сервиса, и дизайн-макеты согласовывались с заказчиком при участии режиссера с Областного телевидения. На каждом этапе разработки проводилось тестирование как внутренними, так и внешними тестировщиками по разработанной методике тестирования. Кроме ручного тестирования запускались автоматические unit-тесты для проверки отдельных сегментов приложения.
Размещенная на сайте опорныйкрай.рф сборка приложения полностью соответствует сборке, которая использовалась для выбора обладателей ценных подарков. Любой человек может проверить соответствие хэшей исполняемого файла сборки на сайте с тем, что использовался на церемонии выбора участников.
Сборка приложения, которое использовалось при выборе обладателей ценных подарков (файл: Викторина-Опорный-край.zip, 23 Мб)
Исходный код генератора случайных чисел (файл: Генератор-случайных-чисел.zip, 10 Мб)