avva: (Default)
[personal profile] avva
В блоге о теории сложности Билл Гасарк недавно рассказал забавную историю (англ.), которую я перескажу.
Лектор дал студентам домашнее задание: подбросить монету 600 раз и записать последовательность О и Р (орлов и решек). Он предупредил их также, что если они попробуют просто написать случайную последовательность сами из головы, не подбрасывая, он это обнаружит. И действительно, в тех заданиях, что он собрал у студентов, в двух из них не было ни разу подряд шесть орлов или шесть решек - надежный знак того, что последовательность не случайная. Лектор вызывает к себе этих двоих студентов. Первый признается, что он действительно просто записал О и Р, как ему казалось случайным. Зато второй утверждает, что он на самом деле подбрасывал монету 600 раз и записывал за ней, но когда он увидел шесть орлов подряд, то подправил результат, потому что подумал, что учитель увидит эти шесть орлов подряд и решит, что последовательность не случайна.

Меня эта история заставила задуматься вот над каким вопросом. Предположим, у вас нет генератора случайных чисел (т.е. монеты), но вы все равно хотите сгенерировать случайную последовательность нетривиальной длины - десятки бит, как минимум. Как это сделать? Например, вы сидите в кафе, перед вами чашка кофе, тетрадь и карандаш. Только что вы заплатили за кофе последней мелочью, что у вас была в кошельке. Телефон, планшет и ноутбук остались дома. Не вставая с места, вы хотите записать случайную (в идеале) последовательность нулей и единиц. Ваши действия?

Я придумал один способ, но у него есть немало недостатков. Может, вы придумаете лучше? Мой способ такой:


Мой способ предполагает, что в кафе много посетителей и часто кто-то новый входит. Я сижу за столиком и слежу за входом. Кладу руку на стол, и начинаю водить указательным пальцем по столу, вправо-влево, вправо-влево, ритмическое круговое движение вокруг вертикальной оси (т.е. вся рука лежит неподвижно, только палец движется). Это легко делать равномерно, с периодом примерно одна секунда. Каждый раз, когда кто-то входит в кафе, в момент пересечения им дверного проема, если мой палец находится левее вертикальной оси вращения, это 0, если правее, это 1. Если настолько близко к оси, что я не уверен, то жду следующего. Если кто-то заходит очень медленно или тормозит прямо в дверном проеме, жду следующего. Далее, каждый раз, когда я получаю 0 или 1, я записываю, и жду перерыва между входящими как минимум в 5 секунд (отсчитываю в уме). Пока не будет такого перерыва, я не начинаю опять вращать пальцем и учитывать входящих. Это должно устранить неслучайные эффекты от людей, входящих друг за другом.

Главный недостаток этого метода в том, что скорость получения случайных битов зависит от посетителей. Если их мало, это долго и утомительно. Кроме того, я не уверен, что 5 секунд ожидания между входящими достаточно для качественной рандомизации. Другой вариант "триггера" - шум начинающей работать эспрессо-машины, если только одна работает в кафе.
Page 1 of 3 << [1] [2] [3] >>

Date: 2014-04-24 10:40 am (UTC)
From: [identity profile] dmytro kharchenko (from livejournal.com)
Шестигранный карандаш отлично заменяет собой кубик d6.

Date: 2014-04-24 02:09 pm (UTC)
From: [identity profile] vzaliva.livejournal.com
я тоже сразу про это подумал.

Date: 2014-04-24 10:43 am (UTC)
From: [identity profile] amarao-san.livejournal.com
чётные/нечётные номера (буквы по порядку алфавита) на купюрах.

Date: 2014-04-24 10:43 am (UTC)
From: [identity profile] gaz-v-pol.livejournal.com
Я бы попробовал вычислять sqrt(2) в надежде, что его цифры случайны (это, насколько я понимаю, не доказано). И добавил бы к каждой цифре последнюю секунду того времени, в которое я её вычислил. Это уж точно случайно.

Date: 2014-04-24 10:51 am (UTC)
From: [identity profile] vodianoj.livejournal.com
Да, мне тоже именно это пришло в голову, но тут проблема, что это кажется мне очень медленным и трудоёмким методом. Вот тут автор подсчитывет Пи с точностью до 14 знаков: http://www.cygnus-software.com/misc/pidigits.htm

(no subject)

From: [identity profile] p_govorun.livejournal.com - Date: 2014-04-24 11:04 am (UTC) - Expand

(no subject)

From: [identity profile] nec-p1us-u1tra.livejournal.com - Date: 2014-04-24 11:33 am (UTC) - Expand

(no subject)

From: [identity profile] gaz-v-pol.livejournal.com - Date: 2014-04-24 11:39 am (UTC) - Expand

(no subject)

From: [identity profile] kobak.livejournal.com - Date: 2014-04-24 12:06 pm (UTC) - Expand

(no subject)

From: [identity profile] p_govorun.livejournal.com - Date: 2014-04-24 04:28 pm (UTC) - Expand

Date: 2014-04-24 10:45 am (UTC)
nechaman: (i)
From: [personal profile] nechaman
Я думала смотреть на улицу и смотреть кто пересекает какую-нибудь условную линию. Мужчина - 0, женщина - 1. (Или наоборот)
Недостаток, что число мужчин и женщин на улице может быть изначально не одинаково по какой-то социальной причине. Но проще, чем ваш способ.

Date: 2014-04-24 10:55 am (UTC)
From: [identity profile] p_govorun.livejournal.com
Классическая история из Перельмана: двое пытаются именно так определить случайность -- и тут проходит рота солдат.

(no subject)

From: [personal profile] nechaman - Date: 2014-04-24 11:32 am (UTC) - Expand

(no subject)

From: [identity profile] doktor-gradus.livejournal.com - Date: 2014-04-24 03:15 pm (UTC) - Expand

(no subject)

From: [identity profile] p_govorun.livejournal.com - Date: 2014-04-24 04:30 pm (UTC) - Expand

(no subject)

From: [personal profile] ichthuss - Date: 2014-04-26 09:49 pm (UTC) - Expand

(no subject)

From: [identity profile] p_govorun.livejournal.com - Date: 2014-04-26 09:53 pm (UTC) - Expand

(no subject)

From: [identity profile] nuladno.livejournal.com - Date: 2014-04-27 04:34 pm (UTC) - Expand

(no subject)

From: [identity profile] linguiste.livejournal.com - Date: 2014-04-25 04:34 pm (UTC) - Expand

(no subject)

From: [identity profile] p_govorun.livejournal.com - Date: 2014-04-25 04:54 pm (UTC) - Expand

(no subject)

From: [identity profile] linguiste.livejournal.com - Date: 2014-04-25 05:00 pm (UTC) - Expand

Date: 2014-04-24 10:46 am (UTC)
From: [identity profile] murchik007.livejournal.com
Просто взять меню и просмотреть цены сверху вниз.

Четная цифра - ноль, нечетная - единица, ну или наоборот.

Неутомительно и довольно рандомально.

Date: 2014-04-24 10:53 am (UTC)
From: [identity profile] vodianoj.livejournal.com
Боюсь, что не будет рандомально. Цены в меню часто красивые.

(no subject)

From: [identity profile] r-l.livejournal.com - Date: 2014-04-24 10:56 am (UTC) - Expand

(no subject)

From: [identity profile] murchik007.livejournal.com - Date: 2014-04-24 10:57 am (UTC) - Expand

(no subject)

From: [identity profile] ok-66.livejournal.com - Date: 2014-04-24 02:01 pm (UTC) - Expand

(no subject)

From: [identity profile] irene221b.livejournal.com - Date: 2014-04-24 10:58 am (UTC) - Expand

(no subject)

From: [identity profile] bsivko.livejournal.com - Date: 2014-04-24 10:59 am (UTC) - Expand

(no subject)

From: [identity profile] garten-besitzer.livejournal.com - Date: 2014-04-29 04:13 am (UTC) - Expand

Date: 2014-04-24 10:56 am (UTC)
From: [identity profile] r-l.livejournal.com
Несколько стихотворений, которые Вы помните наизусть - чет/нечет (кол-во букв в словах). Для надежности - строчки стихов разных размеров вперемежку (можно просто по строчке из разных текстов вспоминать). Должно быть вполне себе рандомальненько. (Правда, довольно долго. Можно было бы брать гласные/согласные первых слов, но русский язык тут будет давить.)
Edited Date: 2014-04-24 10:59 am (UTC)

филологический генератор

Date: 2014-04-25 01:34 pm (UTC)
From: [identity profile] falcao.livejournal.com
Я похожую вещь хотел предложить: разбить алфавит из 32 букв (е=ё) на две части, чередуя буквы. То есть в одной части оказываются авдж..., в другой бгез... . А потом берётся что-нибудь известное, и записывается "двоично".

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

Date: 2014-04-24 10:56 am (UTC)
From: [identity profile] timur0.livejournal.com
если есть тетрадь и карандаш, то без проблем. для простоты считаем, что тетрадь в клеточку - шахматная раскраска даст 0 и 1. теперь держим карандаш под углом 45 градусов к плоскости стола, острие сверху, под ним - тетрадь. отпускаем карандаш - он падает на стол незаточенным концом, отскакивает и острие карандаша попадает на тетрадь и делает там отметку. осталось только взять цифру из той клетки, куда попал карандаш.
плюсы способа - достаточно случайно, легко реализуемо.
минусы - карандаш может сломаться, окружающие посмотрят как на идиота.

Date: 2014-04-24 11:19 am (UTC)
From: [identity profile] xgrbml.livejournal.com
Если водить пальцем по столу, опсматривать на часы и делать отметки - тоже посмотрят.

Date: 2014-04-24 10:59 am (UTC)
From: [identity profile] p_govorun.livejournal.com
Пусть тетрадь у нас будет в клетку. Тогда рисуем произвольную закорюку. Берём вертикальную линию сетки, разбиваем интервалы сетки на ней на пары. Берём только те пары, которые закорюка пересекает ровно один раз. Если она пересекает верхнюю клетку пары -- 1, нижнюю -- 0.

(Разлиновать клетку можно и самому. Точности не требуется.)

Date: 2014-04-24 10:59 am (UTC)
From: [identity profile] vels.livejournal.com
А почему просто не разорвать листочки из тетради на много квадратиков, на половине написать 0, на другой - 1. Все хорошо перемешать,после чего вытаскивать квадратик, проверять бит и замешивать его обратно.

Слишком банально ? )

Date: 2014-04-24 01:29 pm (UTC)
From: [identity profile] vodianoj.livejournal.com
Хорошо, кстати

(no subject)

From: [identity profile] isk.livejournal.com - Date: 2014-04-24 09:15 pm (UTC) - Expand

Date: 2014-04-24 11:01 am (UTC)
From: [identity profile] janatem.livejournal.com
Цифровые часы, которые показывают секунды, — достаточно эффективный ГСЧ, если не пользоваться ими слишком часто. Еще бывают часы с секундомером, который показывает в миллисекундах, это еще удобней.

Date: 2014-04-24 11:05 am (UTC)
From: [identity profile] nameless--one.livejournal.com
с миллисекундами - лучший метод пожалуй из всех вышепредложенных

(no subject)

From: [identity profile] amarao-san.livejournal.com - Date: 2014-04-24 11:08 am (UTC) - Expand

(no subject)

From: [identity profile] nameless--one.livejournal.com - Date: 2014-04-24 11:15 am (UTC) - Expand

(no subject)

From: [identity profile] amarao-san.livejournal.com - Date: 2014-04-24 11:29 am (UTC) - Expand

(no subject)

From: [identity profile] janatem.livejournal.com - Date: 2014-04-24 05:30 pm (UTC) - Expand

(no subject)

From: [identity profile] dzz.livejournal.com - Date: 2014-04-24 12:46 pm (UTC) - Expand

Date: 2014-04-24 11:01 am (UTC)
From: [identity profile] dzz.livejournal.com
Расчерчиваем лист бумаги на небольшие клетки и объявляем их "чёрными" и "белыми" по принципу шахматной доски. Далее не глядя тыкаем в произвольное место листка карандашом, смотрим на результат.
Edited Date: 2014-04-24 11:03 am (UTC)

Date: 2014-04-24 12:32 pm (UTC)
From: [identity profile] avva.livejournal.com
У меня в голове есть образ "доски" и я представляю примерно, куда я тыкаю карандашом. Даже если я не смогу по заказу не глядя ткнуть в белое или черное, все равно, мне кажется, результат случайным не будет. Может, если покрутить листок перед тем, как тыкать... и то не факт, я в уме могу за кручением тоже следить.

(no subject)

From: [identity profile] dzz.livejournal.com - Date: 2014-04-24 12:44 pm (UTC) - Expand

Date: 2014-04-24 11:13 am (UTC)
From: [identity profile] phoonzang.livejournal.com
итерировать логистическое отображение (http://en.wikipedia.org/wiki/Logistic_map) для значения парамететра из хаотического режима и брать четность, скажем, третьей цифры после запятой

Date: 2014-04-24 11:14 am (UTC)
From: [identity profile] phoonzang.livejournal.com
ну или tent map (http://en.wikipedia.org/wiki/Tent_map), если не хочется выполнять умножения

(no subject)

From: [identity profile] inhm.livejournal.com - Date: 2014-04-24 11:00 pm (UTC) - Expand

Date: 2014-04-24 11:15 am (UTC)
From: [identity profile] iisus.livejournal.com
Если есть карандаш, можно его небрежно раскручиавть (как при игре в бутылочку), и смотреть, в какую полудугу воображаемой окружности он укажет. Чеговеческий организм + любая физическая система - отличный источник случайных чисел.

Date: 2014-04-24 12:50 pm (UTC)
From: [identity profile] dzz.livejournal.com
Раскручивать карандаш с одинаковым усилием для попадания в нужную полудугу несложно.
Правда, можно расчертить листок на узкие секторы и вращать карандаш на нём.

(no subject)

From: [identity profile] iisus.livejournal.com - Date: 2014-04-24 02:08 pm (UTC) - Expand

Date: 2014-04-24 11:17 am (UTC)
From: [identity profile] xxxxx.livejournal.com
"чашка кофе, тетрадь и карандаш" --- ну предположив ещё, что тетрадь в клеточку, смело окунайте карандаш в кофе и брызгайте на бумагу

Date: 2014-04-24 11:19 am (UTC)
From: [identity profile] wingover.livejournal.com
"Зато второй утверждает, что он на самом деле подбрасывал монету 600 раз и записывал за ней. Проверили в присутствии лектора. Подбросили 600 раз - получилась та же самая последовательность".

Date: 2014-04-24 01:13 pm (UTC)

Date: 2014-04-24 11:21 am (UTC)
From: [identity profile] mi-b.livejournal.com
Раскладываем на салфетке пи в ряд, переводим в двоичный, делаем xor с датой рождения дедушки - ни один профессор не поймает :)

Date: 2014-04-24 11:21 am (UTC)
From: [identity profile] dibr.livejournal.com
> Мой способ предполагает, что в кафе много посетителей и часто кто-то новый входит

Этот способ (и многие другие предложенные в комментах) предполагает "у нас нет ГСЧ, так давайте сделаем ГСЧ из подручных средств". Мне вот первым в голову пришло разрисовать на бумажке "циферблат" на 16 или 32 делений, и раскручивать карандаш (как стрелку) - это даст по 4-5 бита за раз. Но это противоречит условию, в котором написано "предположим, у вас нет генератора случайных чисел"! Что нет именно монеты - это фигня, уж плоское и пригодное для подбрасывания сплошь и рядом, достаточно оглядеться - нет у нас генератора, вообще :-)

Поэтому я предлагаю "сделать более рандомным" то, что генерирует человек "из головы". Например, так: нагенерировать "из головы" нули и единицы (с неизбежными статистическими артефактами вроде отсутствия нескольких нулей/единиц подряд), "перемешать" - взять из исходной последовательности подпоследовательность с шагом 5 начиная с позиции 1, затем с шагом 5 начиная с 2, с 3 с 4 и с 5 (можно придумать и более сложное перемешивание), а затем ещё пройтись "бегущим xor" (new_X[i] = X[i] xor X[i-i]). Результат, конечно, по прежнему будет неслучаен, но по свойствам он будет значительно ближе к случайному, чем просто придуманный из головы. В конце концов, для практических применений истинность случайности неважна, важна непредсказуемость, ну и статистические характеристики.

Я бы, конечно, предложил нагенерировать из головы сразу числа, и побольше, а потом вычислить от них какую-нибудь хорошую хэш-функцию (раза в 2-3 более короткую, чем входные данные - в этом случае результат будет настолько близок к настоящим случайным числам, насколько это вообще возможно для неслучайных), но без "компьютера" (планшета) это слишком сложно. Хотя, теоретически, и возможно :-)

Date: 2014-04-24 11:55 am (UTC)
vlad_suh: Glider in the sky (Default)
From: [personal profile] vlad_suh
Кстати да, попытка сделать ГПСЧ из подручных средств - это читерство.

Date: 2014-04-24 11:22 am (UTC)
From: [identity profile] revoltp.livejournal.com
ритм пальца может попасть в резонанс.
Самое надежное - вычислять какое-то иррациональное число. Вроде бы со стороны это неотличимо от случайной последовательности.
Интересно, что когда последовательность формируется не случайно (как знаки числа пи, например) со стороны она будет казаться случайной (если интересуемся четностью знаков), мы можем это гарантировать.

А вот если мы берем настоящий генератор случайных чисел - то может случайно и закономерность обнаружиться. Более того, откуда мы можем знать, что это - "настоящий генератор"?
Edited Date: 2014-04-24 11:23 am (UTC)

Date: 2014-04-24 11:25 am (UTC)
From: [identity profile] mi-b.livejournal.com
Или просим переключить телевизор на деловой канал, типа БлумбергТВ, и переписывает вторые цифры цен акций из ленты ползущей внизу

Date: 2014-04-24 11:40 am (UTC)
From: [identity profile] paulsergeevich.livejournal.com
Можно подбрасывать карандаш. Если упал стержнем в сторону меня - 0, в обратную - 1. Или бросать его в чашку.

Date: 2014-04-24 12:26 pm (UTC)
From: [identity profile] avva.livejournal.com
Это вряд ли случайно, карандаш недостаточно вращается по сравнению с монетой.

(no subject)

From: [identity profile] agasfer.livejournal.com - Date: 2014-04-24 12:33 pm (UTC) - Expand

(no subject)

From: [identity profile] paulsergeevich.livejournal.com - Date: 2014-04-24 01:29 pm (UTC) - Expand

Date: 2014-04-24 12:00 pm (UTC)
From: [identity profile] chitatel-lj.livejournal.com
Кофе выпить.
Нарвать из тетради бумажек, написать на них нули и единицы, положить в чашку, взболтать, доставать по одной не глядя.

Date: 2014-04-24 12:06 pm (UTC)
From: [identity profile] foolofsilence.livejournal.com
Часы - хороший помощник в генерации случайной последовательности.

Date: 2014-04-24 12:22 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, надо было заранее запретить часы, я не подумал :)

Date: 2014-04-24 12:07 pm (UTC)
From: [identity profile] randomisator.livejournal.com
Если я сижу в кафе, значит я в городе. Если я в городе, значит по улице ездят машины. У машин есть номера.

Date: 2014-04-24 12:22 pm (UTC)
From: [identity profile] avva.livejournal.com
А что в этих номерах случайно? Я понятия не имею, как они генерируются. И что делать с машинами, которые проезжают мимо снова и снова?

(no subject)

From: [identity profile] ok-66.livejournal.com - Date: 2014-04-24 02:04 pm (UTC) - Expand

(no subject)

From: [identity profile] dragon-ru.livejournal.com - Date: 2014-04-24 02:35 pm (UTC) - Expand

(no subject)

From: [identity profile] gegmopo4.livejournal.com - Date: 2014-04-24 02:48 pm (UTC) - Expand

(no subject)

From: [identity profile] amarao-san.livejournal.com - Date: 2014-04-24 02:44 pm (UTC) - Expand

(no subject)

From: [identity profile] janatem.livejournal.com - Date: 2014-04-24 05:46 pm (UTC) - Expand

Date: 2014-04-24 12:07 pm (UTC)
From: [identity profile] ny-quant.livejournal.com
Если можно выйти из кафе, то я бы взял камень и стал бы бросаться в небольшую мишень, например пятно на асфальте. Недолет-перелет.

Date: 2014-04-24 12:12 pm (UTC)
From: [identity profile] nameless--one.livejournal.com
имхо это очень неслучайно

вполне возможна систематическая ошибка

(no subject)

From: [identity profile] ny-quant.livejournal.com - Date: 2014-04-24 01:29 pm (UTC) - Expand

(no subject)

From: [identity profile] nameless--one.livejournal.com - Date: 2014-04-24 01:37 pm (UTC) - Expand

(no subject)

From: [identity profile] ny-quant.livejournal.com - Date: 2014-04-24 02:29 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2014-04-24 12:21 pm (UTC) - Expand

(no subject)

From: [identity profile] ny-quant.livejournal.com - Date: 2014-04-24 01:57 pm (UTC) - Expand

Date: 2014-04-24 12:21 pm (UTC)
From: [identity profile] i-shmool.livejournal.com
А как вы отсчитываете секунду? Я проговариваю "одна тысяча [порядковый номер]".
Кстати, когда работал в социологии, всегда очень легко определял мухлюющих интервьюеров просто по массиву данных. Блок "нарисованных" анкет светился там, будто маяк в степи даже когда придумана была не вся анкета, а только несколько вопросов, не заданных по лени.

Date: 2014-04-24 12:25 pm (UTC)
From: [identity profile] avva.livejournal.com
Я говорю "раз тридцать три, два тридцать три...". Для моего метода вроде бы не нужна особая точность отсчета секунды.

(no subject)

From: [identity profile] knastya.livejournal.com - Date: 2014-04-24 02:42 pm (UTC) - Expand

(no subject)

From: [identity profile] i-shmool.livejournal.com - Date: 2014-04-24 02:44 pm (UTC) - Expand

(no subject)

From: [identity profile] knastya.livejournal.com - Date: 2014-04-24 02:45 pm (UTC) - Expand

(no subject)

From: [identity profile] i-shmool.livejournal.com - Date: 2014-04-24 02:50 pm (UTC) - Expand
Page 1 of 3 << [1] [2] [3] >>

January 2026

S M T W T F S
    1 2 3
4 5 6 7 8 910
11 12 1314 151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 16th, 2026 05:08 am
Powered by Dreamwidth Studios