10 мая 14:49
2 минуты

Случайные 13-значные коды для бланков ОГЭ

Недавно в школе проходила РПГ на тему сдачи экзаменов. То есть ОГЭшники и ЕГЭшники на полном серьёзе заполняли бланки, решали задачи полного экзаменационного варианта, а я изображала сначала технического специалиста, а потом проверяющего эксперта.

Ещё один такой отыгрыш ждёт нас 17 мая.

В ЕГЭ, как ни забавно, играть гораздо проще: вся работа проходит за компьютером, и система сама проверяет верность введённого ответа. А вот ОГЭ приходится проверять вручную. И готовить для сдачи индивидуальные бланки.


На каждом ОГЭшном бланке стоит 13-значный номер. Причём на бланках № 1 и № 2 эти номера обычно разные. По номеру ваши результаты сопоставляются вашей записи в базе — как раз это гарантирует объективность, ведь ваше имя нигде не «светится».

Ну и этот номер вы задаёте в качестве имени файлов с решениями второй части экзамена.

В нашем отыгрыше эти номера мне надо было раскидать на всех сдающих. Единственное условие: все номера должны быть разными, чтобы я потом по имени файла поняла, кому балл за этот файл рисовать.


Варианты решения могут быть разными. Я, естественно, набросала свой на Питоне, не зря же он отличный язык прототипирования.

1) Составила строку из цифр, повторённых пять раз. Это позволило цифрам в номере повторяться.

num = ''
for i in range(5):
  for j in range(10):
    num += str(j)

2) Строку я преобразовала в список. Теперь каждый символ строки стал отдельным элементом списка.

num = list(num)

3) Теперь этот список я «замешала» при помощи метода .shuffle() модуля random.

random.shuffle(num)

Теперь у нас уже случайный набор цифр, только слишком длинный — из 50 цифр.

4) Осталось вывести первые 13 символов нашего списка. Проще всего это сделать, собрав элементы снова в строку при помощи среза.

print(''.join(num)[:13])


Вот весь код программки, которая за один запуск выдаёт десять случайных 13-значных чисел.

import random

num = ''
for i in range(5):
    for j in range(10):
        num += str(j)

num = list(num)
for i in range(10):
    random.shuffle(num)
    print(''.join(num)[:13])

Обратите внимание: составляем 50-значную строку мы один раз, а дальше просто замешиваем её, сколько нужно.

Вывод может быть, например, таким:

1545020904967
4735326057005
2079875308964
3482096197552
3335818279040
5864215649929
4832200521656
5758123696278
2829394392713
1088239197451

Ещё можно проверить на ведущие нули и удалить их при необходимости. Хотя в бланках у нас не числа, а именно коды, так что ведущие нули имеют право на существование.

Если вам где-нибудь понадобятся случайные наборы символов — пользуйтесь!


Бесплатный
Комментарии
avatar
Здесь будут комментарии к публикации