Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так,
чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось
в Интернет. Вася предложил написать программку, которая напечатает
случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так
и сделали, каждый на любимом языке — Вася на Си (можно было и на
Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них
жестоко обломался?
Posted via RSDN NNTP Server 2.1 beta
Re: Случайные числа, языки программирования и Интернет.
Здравствуйте, raskin, Вы писали:
R>Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так, R>чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось R>в Интернет. Вася предложил написать программку, которая напечатает R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так R>и сделали, каждый на любимом языке — Вася на Си (можно было и на R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них R>жестоко обломался?
Что есть случайная 16-ричная строка ? Строка из HEX символов ? Если так — тогда Вася может написать такую программу.
Я не сильно знаком с программированием на шелле. Но, т.к. это скриптовый язык, скорее всего в нём тяжело будет представить 16-ричную строку.
Ещё вопрос. Как понимать жестоко обломался ?
CD 20 AMIN+.com
[checked by DrRaven]
Re[2]: Случайные числа, языки программирования и Интернет.
DrRaven wrote: > R>Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так, > R>чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось > R>в Интернет. Вася предложил написать программку, которая напечатает > R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так > R>и сделали, каждый на любимом языке — Вася на Си (можно было и на > R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них > R>жестоко обломался? > > Что есть случайная 16-ричная строка ? Строка из HEX символов ? Если так
Угу. > — тогда Вася может написать такую программу.
Ага. > Я не сильно знаком с программированием на шелле. Но, т.к. это скриптовый > язык, скорее всего в нём тяжело будет представить 16-ричную строку.
Утилиты printf и hexdump в системе установлены и пользование ими (одной
из них), или любыми другими из POSIX, подразумевается. > Ещё вопрос. Как понимать жестоко обломался ?
В этом и загадка... Для простоты признаюсь, что обе программы были
написаны, один раз запущены и выдали по 8 символов, которые можно
прочитать как шестнадцатеричные цифры. Причём разные — то есть, кто
первый из них занял ящик не имеет значения.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Случайные числа, языки программирования и Интернет.
Здравствуйте, raskin, Вы писали:
>> Ещё вопрос. Как понимать жестоко обломался ? R>В этом и загадка... Для простоты признаюсь, что обе программы были R>написаны, один раз запущены и выдали по 8 символов, которые можно R>прочитать как шестнадцатеричные цифры. Причём разные — то есть, кто R>первый из них занял ящик не имеет значения.
Это из серии как некие программируемые калькуляторы, все как один, генерировали одну и туже последовательность случайных чисел, если не читать инструкцию?
... << My edition based on RSDN@Home 1.2.0 alpha rev. 672 >>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Re[4]: Случайные числа, языки программирования и Интернет.
stele wrote: >>> Ещё вопрос. Как понимать жестоко обломался ? > R>В этом и загадка... Для простоты признаюсь, что обе программы были > R>написаны, один раз запущены и выдали по 8 символов, которые можно > R>прочитать как шестнадцатеричные цифры. Причём разные — то есть, кто > R>первый из них занял ящик не имеет значения. > > Это из серии как некие программируемые калькуляторы, все как один, > генерировали одну и туже последовательность случайных чисел, если не > читать инструкцию?
Ну есть такое. Так кто из двоих обломался знаете?
Posted via RSDN NNTP Server 2.1 beta
Re: Случайные числа, языки программирования и Интернет.
Здравствуйте, raskin, Вы писали:
R>Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так, R>чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось R>в Интернет. Вася предложил написать программку, которая напечатает R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так R>и сделали, каждый на любимом языке — Вася на Си (можно было и на R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них R>жестоко обломался?
зависит от того как генерировали случайные числа.
для 8 символов Си вызова srand+rand нормальный результат дадут,
к тому же сишник мог использовать random в юникс — криптостойкий генератор,
все равно что пользлваться /dev/random.
а вот на шелле скорее /dev/random и пользовался.
итог: задача неполна, неточна.
в этих условиях пытаться толкнуть свою версию будет неправильным
Здравствуйте, raskin, Вы писали:
R>...Вопрос: кто из них R>жестоко обломался?
Ну тот, кто плохо программит
Я знаю, кто не обломался -- тот, кто догадался в качестве уникального ID использовать сгенирированный для этого UID
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Erop wrote: > R>...Вопрос: кто из них > R>жестоко обломался? > > Ну тот, кто плохо программит
Да ладно, обычное разгильдяйство второпях. Не мог же человек на shell не
обогнать любителя С в два раза, не мог же любитель С позорно отстать в
четыре раза от shell...
> Я знаю, кто не обломался -- тот, кто догадался в качестве уникального ID > использовать сгенирированный для этого UID
Он не обломался — он заломался. Я вот тоже раньше заводил имена по 8
байт энтропии, потом достало, перешёл на описанные в задаче 4 байта
энтропии (8 символов). Кстати, GUID, созданные на одной машине, нельзя
распознать как таковые?
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Случайные числа, языки программирования и Интернет.
ilnar wrote: > зависит от того как генерировали случайные числа.
Разумеется. > для 8 символов Си вызова srand+rand нормальный результат дадут, > к тому же сишник мог использовать random в юникс — криптостойкий генератор, > все равно что пользлваться /dev/random. > а вот на шелле скорее /dev/random и пользовался. > итог: задача неполна, неточна. > в этих условиях пытаться толкнуть свою версию будет неправильным
Ну, немного неполна, как и все задачи из практики. На самом деле Вы
указали даже не все очевидные методы и неточно указали характеристики
некоторых указанных. Скажем так, если дано, что один из них жестоко
обломался на ровном месте, то задача почти корректна.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Случайные числа, языки программирования и Интернет.
Здравствуйте, raskin, Вы писали:
R>...Скажем так, если дано, что один из них жестоко R>обломался на ровном месте, то задача почти корректна.
Неужели вырубили свет, а у одного из низх не было ни упса ни резервной копии?
Или кого-то из них таки уволили за страдание хренью в рабочее время?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, raskin, Вы писали:
R>Да ладно, обычное разгильдяйство второпях. Не мог же человек на shell не R>обогнать любителя С в два раза, не мог же любитель С позорно отстать в R>четыре раза от shell...
Да не обязательно, вообще-то
>> Я знаю, кто не обломался -- тот, кто догадался в качестве уникального ID >> использовать сгенирированный для этого UID R>Он не обломался — он заломался. Я вот тоже раньше заводил имена по 8 R>байт энтропии, потом достало, перешёл на описанные в задаче 4 байта R>энтропии (8 символов). Кстати, GUID, созданные на одной машине, нельзя R>распознать как таковые?
Не понял вопроса
Вообще-то про UID'ы гарантируют, что они уникальны. Не "мала вероятность совпадения", а гарнатируется уникальность.
Достигается это тем, что в UID'е используют уникальный ID аппаратуры компа + время генерации + порядковый номер.
Так что если ты не сделаешь как-то две копии одной сетевой карточки и не будешь химичить со временем, то каждая следующая генерация UID'а сгенерит тебе уникальный ID. В мировых масштабах
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Случайные числа, языки программирования и Интернет.
Здравствуйте, raskin, Вы писали:
R>ilnar wrote: >> зависит от того как генерировали случайные числа. R>Разумеется. >> для 8 символов Си вызова srand+rand нормальный результат дадут, >> к тому же сишник мог использовать random в юникс — криптостойкий генератор, >> все равно что пользлваться /dev/random. >> а вот на шелле скорее /dev/random и пользовался. >> итог: задача неполна, неточна. >> в этих условиях пытаться толкнуть свою версию будет неправильным
R>Ну, немного неполна, как и все задачи из практики. На самом деле Вы R>указали даже не все очевидные методы и неточно указали характеристики R>некоторых указанных. Скажем так, если дано, что один из них жестоко R>обломался на ровном месте, то задача почти корректна.
да, обламался тот который писал на шелле, т.к. админ-приколист переопределил /dev/random, другие пакеты, с которым могли на шелле получить случайное число
Re[4]: Случайные числа, языки программирования и Интернет.
Erop wrote: > R>...Скажем так, если дано, что один из них жестоко > R>обломался на ровном месте, то задача почти корректна. > > Неужели вырубили свет, а у одного из низх не было ни упса ни резервной > копии?
У кого — определить слишком сложно..
> Или кого-то из них таки уволили за страдание хренью в рабочее время?
Э.. Ладно, дано, что дело было в нерабочее время.
Erop wrote: > R>Да ладно, обычное разгильдяйство второпях. Не мог же человек на shell не > R>обогнать любителя С в два раза, не мог же любитель С позорно отстать в > R>четыре раза от shell... > > Да не обязательно, вообще-то
Я понимаю, что в принципе мог. "Не мог" — счёл бы непереносимым обломом.
>>> Я знаю, кто не обломался -- тот, кто догадался в качестве уникального ID >>> использовать сгенирированный для этого UID > R>Он не обломался — он заломался. Я вот тоже раньше заводил имена по 8 > R>байт энтропии, потом достало, перешёл на описанные в задаче 4 байта > R>энтропии (8 символов). Кстати, GUID, созданные на одной машине, нельзя > R>распознать как таковые? > > Не понял вопроса
Вопрос в том, а не много ли это — 16 (или сколько там) байт данных, то
есть 32 символа.
> Вообще-то про UID'ы гарантируют, что они уникальны. Не "мала вероятность > совпадения", а гарнатируется уникальность.
Я знаю. Свой опыт я привёл как пример того, что такие длины — достают. К
тому же, уникальность гарантирована только среди корректно созданных UID
— теоретически может совпасть со случайным числом, созданным врагом. Но
чисто теоретически для таких целей, как в вопросе.
> Достигается это тем, что в UID'е используют уникальный ID аппаратуры > компа + время генерации + порядковый номер.
Знаю.
> Так что если ты не сделаешь как-то две копии одной сетевой карточки и не
Зачем две копии? Clone MAC и всё. Про перестановку одной копии в другой
компьютер, живущий по другой timezone и не знающий этого (хотя это уже
химичить со временем) я вообще молчу.
> будешь химичить со временем, то каждая следующая генерация UID'а > сгенерит тебе уникальный ID. В мировых масштабах
Про распознать как таковые — враг имеет 3 UID — один точно с моей машины
и два, из которых один с моей машины. Может ли он сказать, какой из
двух? Я вот не знаю, то ли там хешируют всё вместе с сохранением размера
и без коллизий и выделить совпадение MAC нельзя, то ли ленятся.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Случайные числа, языки программирования и Интернет.
ilnar wrote: >>> а вот на шелле скорее /dev/random и пользовался. >>> итог: задача неполна, неточна. >>> в этих условиях пытаться толкнуть свою версию будет неправильным > > R>Ну, немного неполна, как и все задачи из практики. На самом деле Вы > R>указали даже не все очевидные методы и неточно указали характеристики > R>некоторых указанных. Скажем так, если дано, что один из них жестоко > R>обломался на ровном месте, то задача почти корректна. > > да, обламался тот который писал на шелле, т.к. админ-приколист > переопределил /dev/random, другие пакеты, с которым могли на шелле > получить случайное число
Я боюсь, что администратор доприкалывается... OpenSSL он, положим, не
забыл пересобрать, но что-нибудь ещё может грохнуться совершенно без
объявления войны. А если /dev/random читается и является символьным
устройством, то всё не столь печально — есть ещё $RANDOM.
Posted via RSDN NNTP Server 2.1 beta
Re: Случайные числа, языки программирования и Интернет.
Здравствуйте, raskin, Вы писали:
R>Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так, R>чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось R>в Интернет. Вася предложил написать программку, которая напечатает R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так R>и сделали, каждый на любимом языке — Вася на Си (можно было и на R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них R>жестоко обломался?
Оба обломались, ибо такую короткую последовательность лучше сгенерить руками на бумажке.
Re[2]: Случайные числа, языки программирования и Интернет.
andrey.def wrote: > R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так > R>и сделали, каждый на любимом языке — Вася на Си (можно было и на > R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них > R>жестоко обломался? > > Оба обломались, ибо такую короткую последовательность лучше сгенерить > руками на бумажке.
Это не жестоко.. К тому же, 4 байта на бумажке могут оказаться не такими
случайными как хотелось бы, и либо выдать что-то про создававшего, либо
совпасть с уже имеющимся в интернете. Вы бы ещё предложили случайным
образом не задумываясь провести по клавиатуре...
Posted via RSDN NNTP Server 2.1 beta
Re: Случайные числа, языки программирования и Интернет.
Здравствуйте, raskin, Вы писали:
R>Вопрос: кто из них жестоко обломался?
Ммм... Так как никаких данных об умственных способностях нет,
то сложно предположить.
Для шелла можно написать чё-нить типа:
od -t x4 -N 4 /dev/random|awk '{print $2}'
или
printf '%04x%04x\n' $RANDOM $RANDOM
И вроде оба варианта не являются "жестоким обломом".
e-Xecutor wrote: > printf '%04x%04x\n' $RANDOM $RANDOM
> #include <stdio.h> > #include <stdlib.h> > #include <time.h> > > unsigned char rnd() > { > double r=rand(); > r*=256; > r/=RAND_MAX; > return (unsigned char)r; > } > > int main() > { > srand(time(NULL)); > printf("%02x%02x%02x%02x\n",rnd(),rnd(),rnd(),rnd()); > return 0; > } > > > > Вроде тоже ничего сильно обломного. > Но конечно же займёт времени чуток больше чем на шелле
Помните, что я говорил про нежелание отстать в 4 раза? Приведённое Вами
не совсем в лоб, мягко скажем.
На самом деле у одного из товарищей шанса обломаться практически не
было, а другой мог ошибиться — и ошибся.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Случайные числа, языки программирования и Интернет.
Здравствуйте, raskin, Вы писали:
R>andrey.def wrote: >> R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так >> R>и сделали, каждый на любимом языке — Вася на Си (можно было и на >> R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них >> R>жестоко обломался? >> >> Оба обломались, ибо такую короткую последовательность лучше сгенерить >> руками на бумажке. R>Это не жестоко.. К тому же, 4 байта на бумажке могут оказаться не такими R>случайными как хотелось бы, и либо выдать что-то про создававшего, либо R>совпасть с уже имеющимся в интернете. Вы бы ещё предложили случайным R>образом не задумываясь провести по клавиатуре...
упоминаний как видите...
PS: мне понадобилось около 1 секунды, чтобы его сгенерить.
PPS: дивизия китайцев с мешами от русского лото сведёт на нет 10-летнюю работу по согданию ГСЧ...