Re[4]: Случайные числа, языки программирования и Интернет.
От: Roman Odaisky Украина  
Дата: 30.01.07 09:47
Оценка: 4 (1) :)
Здравствуйте, e-Xecutor, Вы писали:

EX>На самом деле я знаю как дело было.

EX>Они оба выяснили, что под рукой есть
EX>только свежепоставленная винда без доступа к сети
EX>Тогда С-шник в полном пролёте.

А я вот недавно узнал, что Mīćřôšőft Kėyboård Łăyõųt Ćŕéáţóŕ тащит с собой cl.exe 14-й версии
До последнего не верил в пирамиду Лебедева.
Re[3]: Случайные числа, языки программирования и Интернет.
От: ilnar Россия  
Дата: 27.01.07 13:31
Оценка: :))
Здравствуйте, raskin, Вы писали:

R>ilnar wrote:

>> зависит от того как генерировали случайные числа.
R>Разумеется.
>> для 8 символов Си вызова srand+rand нормальный результат дадут,
>> к тому же сишник мог использовать random в юникс — криптостойкий генератор,
>> все равно что пользлваться /dev/random.
>> а вот на шелле скорее /dev/random и пользовался.
>> итог: задача неполна, неточна.
>> в этих условиях пытаться толкнуть свою версию будет неправильным

R>Ну, немного неполна, как и все задачи из практики. На самом деле Вы

R>указали даже не все очевидные методы и неточно указали характеристики
R>некоторых указанных. Скажем так, если дано, что один из них жестоко
R>обломался на ровном месте, то задача почти корректна.

да, обламался тот который писал на шелле, т.к. админ-приколист переопределил /dev/random, другие пакеты, с которым могли на шелле получить случайное число
Re[3]: Случайные числа, языки программирования и Интернет.
От: stele Россия www.stele.su
Дата: 27.01.07 00:10
Оценка: 4 (1)
Здравствуйте, raskin, Вы писали:

>> Ещё вопрос. Как понимать жестоко обломался ?

R>В этом и загадка... Для простоты признаюсь, что обе программы были
R>написаны, один раз запущены и выдали по 8 символов, которые можно
R>прочитать как шестнадцатеричные цифры. Причём разные — то есть, кто
R>первый из них занял ящик не имеет значения.

Это из серии как некие программируемые калькуляторы, все как один, генерировали одну и туже последовательность случайных чисел, если не читать инструкцию?
... << My edition based on RSDN@Home 1.2.0 alpha rev. 672 >>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Re[3]: Случайные числа, языки программирования и Интернет.
От: andrey.def Россия  
Дата: 29.01.07 11:53
Оценка: 4 (1)
Здравствуйте, raskin, Вы писали:

R>andrey.def wrote:

>> R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так
>> R>и сделали, каждый на любимом языке — Вася на Си (можно было и на
>> R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них
>> R>жестоко обломался?
>>
>> Оба обломались, ибо такую короткую последовательность лучше сгенерить
>> руками на бумажке.
R>Это не жестоко.. К тому же, 4 байта на бумажке могут оказаться не такими
R>случайными как хотелось бы, и либо выдать что-то про создававшего, либо
R>совпасть с уже имеющимся в интернете. Вы бы ещё предложили случайным
R>образом не задумываясь провести по клавиатуре...

Пожалуйста, df1y свободный на yandex адрес.

http://www.google.ru/search?hl=ru&amp;q=df1y%40&amp;btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&amp;lr=

упоминаний как видите...
PS: мне понадобилось около 1 секунды, чтобы его сгенерить.
PPS: дивизия китайцев с мешами от русского лото сведёт на нет 10-летнюю работу по согданию ГСЧ...
Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 26.01.07 21:31
Оценка: 1 (1)
Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так,
чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось
в Интернет. Вася предложил написать программку, которая напечатает
случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так
и сделали, каждый на любимом языке — Вася на Си (можно было и на
Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них
жестоко обломался?
Posted via RSDN NNTP Server 2.1 beta
Re: Случайные числа, языки программирования и Интернет.
От: ilnar Россия  
Дата: 27.01.07 07:51
Оценка: 1 (1)
Здравствуйте, raskin, Вы писали:

R>Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так,

R>чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось
R>в Интернет. Вася предложил написать программку, которая напечатает
R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так
R>и сделали, каждый на любимом языке — Вася на Си (можно было и на
R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них
R>жестоко обломался?

зависит от того как генерировали случайные числа.
для 8 символов Си вызова srand+rand нормальный результат дадут,
к тому же сишник мог использовать random в юникс — криптостойкий генератор,
все равно что пользлваться /dev/random.
а вот на шелле скорее /dev/random и пользовался.
итог: задача неполна, неточна.
в этих условиях пытаться толкнуть свою версию будет неправильным
Re: Случайные числа, языки программирования и Интернет.
От: e-Xecutor Россия  
Дата: 29.01.07 08:59
Оценка: 1 (1)
Здравствуйте, raskin, Вы писали:

R>Вопрос: кто из них жестоко обломался?

Ммм... Так как никаких данных об умственных способностях нет,
то сложно предположить.
Для шелла можно написать чё-нить типа:
od -t x4 -N 4 /dev/random|awk '{print $2}'

или
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;
}


Вроде тоже ничего сильно обломного.
Но конечно же займёт времени чуток больше чем на шелле

Ы?
Re[4]: Я ззнаю кто не обломался :)
От: Кодт Россия  
Дата: 31.01.07 13:32
Оценка: 1 (1)
Здравствуйте, Erop, Вы писали:

E>Так что если ты не сделаешь как-то две копии одной сетевой карточки


Легко и просто! Рукодельная PCI-сетевуха на FPGA (нужны были другие электрические параметры). Чёрт бы её подрал!
Автор прошивки в муках реализовал протокол ethernet, а на уникальную идентификацию его уже не хватило. Да и как её делать — джамперами, что ли? Ну так джамперы все можно выставить в одно и то же положение.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[3]: если дело не в srand()
От: _pk_sly  
Дата: 02.03.07 15:37
Оценка: 1 (1)
R>Помните, что я говорил про нежелание отстать в 4 раза? Приведённое Вами
R>не совсем в лоб, мягко скажем.

R>На самом деле у одного из товарищей шанса обломаться практически не

R>было, а другой мог ошибиться — и ошибся.

имется ввиду RAND_MAX, который в некоторых реализациях равен 32768?
Re[3]: Случайные числа, языки программирования и Интернет.
От: Erop Россия  
Дата: 27.01.07 13:25
Оценка: :)
Здравствуйте, raskin, Вы писали:

R>...Скажем так, если дано, что один из них жестоко

R>обломался на ровном месте, то задача почти корректна.

Неужели вырубили свет, а у одного из низх не было ни упса ни резервной копии?
Или кого-то из них таки уволили за страдание хренью в рабочее время?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Случайные числа, языки программирования и Интернет.
От: andrey.def Россия  
Дата: 29.01.07 05:59
Оценка: :)
Здравствуйте, raskin, Вы писали:

R>Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так,

R>чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось
R>в Интернет. Вася предложил написать программку, которая напечатает
R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так
R>и сделали, каждый на любимом языке — Вася на Си (можно было и на
R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них
R>жестоко обломался?

Оба обломались, ибо такую короткую последовательность лучше сгенерить руками на бумажке.
Re: Случайные числа, языки программирования и Интернет.
От: DrRaven  
Дата: 26.01.07 22:06
Оценка:
Здравствуйте, raskin, Вы писали:

R>Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так,

R>чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось
R>в Интернет. Вася предложил написать программку, которая напечатает
R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так
R>и сделали, каждый на любимом языке — Вася на Си (можно было и на
R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них
R>жестоко обломался?

Что есть случайная 16-ричная строка ? Строка из HEX символов ? Если так — тогда Вася может написать такую программу.
Я не сильно знаком с программированием на шелле. Но, т.к. это скриптовый язык, скорее всего в нём тяжело будет представить 16-ричную строку.
Ещё вопрос. Как понимать жестоко обломался ?

CD 20 AMIN+.com
[checked by DrRaven]
Re[2]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 26.01.07 22:12
Оценка:
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[4]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 27.01.07 06:18
Оценка:
stele wrote:
>>> Ещё вопрос. Как понимать жестоко обломался ?
> R>В этом и загадка... Для простоты признаюсь, что обе программы были
> R>написаны, один раз запущены и выдали по 8 символов, которые можно
> R>прочитать как шестнадцатеричные цифры. Причём разные — то есть, кто
> R>первый из них занял ящик не имеет значения.
>
> Это из серии как некие программируемые калькуляторы, все как один,
> генерировали одну и туже последовательность случайных чисел, если не
> читать инструкцию?
Ну есть такое. Так кто из двоих обломался знаете?
Posted via RSDN NNTP Server 2.1 beta
Re: Я ззнаю кто не обломался :)
От: Erop Россия  
Дата: 27.01.07 10:29
Оценка:
Здравствуйте, raskin, Вы писали:

R>...Вопрос: кто из них

R>жестоко обломался?

Ну тот, кто плохо программит
Я знаю, кто не обломался -- тот, кто догадался в качестве уникального ID использовать сгенирированный для этого UID
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Я ззнаю кто не обломался :)
От: raskin Россия  
Дата: 27.01.07 13:12
Оценка:
Erop wrote:
> R>...Вопрос: кто из них
> R>жестоко обломался?
>
> Ну тот, кто плохо программит
Да ладно, обычное разгильдяйство второпях. Не мог же человек на shell не
обогнать любителя С в два раза, не мог же любитель С позорно отстать в
четыре раза от shell...

> Я знаю, кто не обломался -- тот, кто догадался в качестве уникального ID

> использовать сгенирированный для этого UID
Он не обломался — он заломался. Я вот тоже раньше заводил имена по 8
байт энтропии, потом достало, перешёл на описанные в задаче 4 байта
энтропии (8 символов). Кстати, GUID, созданные на одной машине, нельзя
распознать как таковые?
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 27.01.07 13:16
Оценка:
ilnar wrote:
> зависит от того как генерировали случайные числа.
Разумеется.
> для 8 символов Си вызова srand+rand нормальный результат дадут,
> к тому же сишник мог использовать random в юникс — криптостойкий генератор,
> все равно что пользлваться /dev/random.
> а вот на шелле скорее /dev/random и пользовался.
> итог: задача неполна, неточна.
> в этих условиях пытаться толкнуть свою версию будет неправильным

Ну, немного неполна, как и все задачи из практики. На самом деле Вы
указали даже не все очевидные методы и неточно указали характеристики
некоторых указанных. Скажем так, если дано, что один из них жестоко
обломался на ровном месте, то задача почти корректна.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Я ззнаю кто не обломался :)
От: Erop Россия  
Дата: 27.01.07 13:28
Оценка:
Здравствуйте, raskin, Вы писали:

R>Да ладно, обычное разгильдяйство второпях. Не мог же человек на shell не

R>обогнать любителя С в два раза, не мог же любитель С позорно отстать в
R>четыре раза от shell...

Да не обязательно, вообще-то

>> Я знаю, кто не обломался -- тот, кто догадался в качестве уникального ID

>> использовать сгенирированный для этого UID
R>Он не обломался — он заломался. Я вот тоже раньше заводил имена по 8
R>байт энтропии, потом достало, перешёл на описанные в задаче 4 байта
R>энтропии (8 символов). Кстати, GUID, созданные на одной машине, нельзя
R>распознать как таковые?

Не понял вопроса
Вообще-то про UID'ы гарантируют, что они уникальны. Не "мала вероятность совпадения", а гарнатируется уникальность.

Достигается это тем, что в UID'е используют уникальный ID аппаратуры компа + время генерации + порядковый номер.
Так что если ты не сделаешь как-то две копии одной сетевой карточки и не будешь химичить со временем, то каждая следующая генерация UID'а сгенерит тебе уникальный ID. В мировых масштабах
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 27.01.07 13:37
Оценка:
Erop wrote:
> R>...Скажем так, если дано, что один из них жестоко
> R>обломался на ровном месте, то задача почти корректна.
>
> Неужели вырубили свет, а у одного из низх не было ни упса ни резервной
> копии?
У кого — определить слишком сложно..

> Или кого-то из них таки уволили за страдание хренью в рабочее время?

Э.. Ладно, дано, что дело было в нерабочее время.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Я ззнаю кто не обломался :)
От: raskin Россия  
Дата: 27.01.07 13:47
Оценка:
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]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 27.01.07 13:56
Оценка:
ilnar wrote:
>>> а вот на шелле скорее /dev/random и пользовался.
>>> итог: задача неполна, неточна.
>>> в этих условиях пытаться толкнуть свою версию будет неправильным
>
> R>Ну, немного неполна, как и все задачи из практики. На самом деле Вы
> R>указали даже не все очевидные методы и неточно указали характеристики
> R>некоторых указанных. Скажем так, если дано, что один из них жестоко
> R>обломался на ровном месте, то задача почти корректна.
>
> да, обламался тот который писал на шелле, т.к. админ-приколист
> переопределил /dev/random, другие пакеты, с которым могли на шелле
> получить случайное число
Я боюсь, что администратор доприкалывается... OpenSSL он, положим, не
забыл пересобрать, но что-нибудь ещё может грохнуться совершенно без
объявления войны. А если /dev/random читается и является символьным
устройством, то всё не столь печально — есть ещё $RANDOM.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 29.01.07 08:11
Оценка:
andrey.def wrote:
> R>случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так
> R>и сделали, каждый на любимом языке — Вася на Си (можно было и на
> R>Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них
> R>жестоко обломался?
>
> Оба обломались, ибо такую короткую последовательность лучше сгенерить
> руками на бумажке.
Это не жестоко.. К тому же, 4 байта на бумажке могут оказаться не такими
случайными как хотелось бы, и либо выдать что-то про создававшего, либо
совпасть с уже имеющимся в интернете. Вы бы ещё предложили случайным
образом не задумываясь провести по клавиатуре...
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 29.01.07 09:09
Оценка:
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[4]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 29.01.07 12:02
Оценка:
andrey.def wrote:
> R>совпасть с уже имеющимся в интернете. Вы бы ещё предложили случайным
> R>образом не задумываясь провести по клавиатуре...
>
> Пожалуйста, df1y свободный на yandex адрес.
На yandex много свободных адресов из этой серии. Тот, про который я
говорю тоже свободен на yandex.

> http://www.google.ru/search?hl=ru&amp;q=df1y%40&amp;btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&amp;lr=

Да, немало, причём есть и в текстах. Но 4-буквенных комбинаций вообще
мало, поэтому здесь ловить нечего.

> упоминаний как видите...

> PS: мне понадобилось около 1 секунды, чтобы его сгенерить.
Мне надо чуть больше, чтобы вызвать программу генерации хороших паролей
с 4 байтами информации.

> PPS: дивизия китайцев с мешами от русского лото сведёт на нет 10-летнюю

> работу по согданию ГСЧ...
4-символьные они положим выжрут. 4-байтные по информации стахановский
порыв Китая съест и не заметит, как и 5-байтные (хотя уже заметит). На
6-байтных они уже немного устанут. На 8-байтных — немного застрелятся.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Случайные числа, языки программирования и Интернет.
От: _DAle_ Беларусь  
Дата: 29.01.07 23:47
Оценка:
Здравствуйте, raskin, Вы писали:

R>Помните, что я говорил про нежелание отстать в 4 раза? Приведённое Вами

R>не совсем в лоб, мягко скажем.

R>На самом деле у одного из товарищей шанса обломаться практически не

R>было, а другой мог ошибиться — и ошибся.

Программист на C забыл/не обратил внимание, что rand() двухбайтовое число возвращает, вызвал два раза rand() и вывел в консоль два четырехбайтовых инта?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: Случайные числа, языки программирования и Интернет.
От: e-Xecutor Россия  
Дата: 30.01.07 07:42
Оценка:
R>Помните, что я говорил про нежелание отстать в 4 раза? Приведённое Вами
R>не совсем в лоб, мягко скажем.
То есть "не совсем"?
В условии не было про то, что С-шник идиот, так ведь?

По поводу "в 4 раза" — будем считать, что любитель шела читал маны

R>На самом деле у одного из товарищей шанса обломаться практически не

R>было, а другой мог ошибиться — и ошибся.

У любителя шела то не было??
Я вот с первого раза написал
printf "%02x%02x",$RANDOM,$RANDOM
и получил полную фигню

На самом деле я знаю как дело было.
Они оба выяснили, что под рукой есть
только свежепоставленная винда без доступа к сети
Тогда С-шник в полном пролёте.
Действительно жестокий облом.
Любителю же шелла тоже прийдётся непросто, я так думаю.
Re[4]: Случайные числа, языки программирования и Интернет.
От: Трурль  
Дата: 30.01.07 08:39
Оценка:
Здравствуйте, ilnar, Вы писали:

I>да, обламался тот который писал на шелле, т.к. админ-приколист переопределил /dev/random, другие пакеты, с которым могли на шелле получить случайное число

Не, обломался он по другой причине.
vasia@computer:~ $ cat random.sh
#! /bin/sh
~petia/random
vasia@computer:~ $ cat .bash_history
find / -name "*random*"
Re[5]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 30.01.07 08:52
Оценка:
Трурль wrote:
> I>да, обламался тот который писал на шелле, т.к. админ-приколист
> переопределил /dev/random, другие пакеты, с которым могли на шелле
> получить случайное число
> Не, обломался он по другой причине.
>
> vasia@computer:~ $ cat random.sh
> #! /bin/sh
> ~petia/random
> vasia@computer:~ $ cat .bash_history
> find / -name "*random*"
Я уже кому-то ответил, что они получили разные результаты.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 30.01.07 08:55
Оценка:
_DAle_ wrote:
> R>На самом деле у одного из товарищей шанса обломаться практически не
> R>было, а другой мог ошибиться — и ошибся.
>
> Программист на C забыл/не обратил внимание, что rand() двухбайтовое
> число возвращает, вызвал два раза rand() и вывел в консоль два
> четырехбайтовых инта?

Ну, это он ещё не дописал программу называется.. Я уже говорил, что
число символов, выведенных на консоль, верное и явной дыры (вроде
половины нулей) нет.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 30.01.07 09:02
Оценка:
e-Xecutor wrote:
> R>Помните, что я говорил про нежелание отстать в 4 раза? Приведённое Вами
> R>не совсем в лоб, мягко скажем.
> То есть "не совсем"?
> В условии не было про то, что С-шник идиот, так ведь?
Зато сказано, что разгильдяй. Но определять такую функцию в любом
случае неясно зачем.

> По поводу "в 4 раза" — будем считать, что любитель шела читал маны

Ну разве что..

> R>На самом деле у одного из товарищей шанса обломаться практически не

> R>было, а другой мог ошибиться — и ошибся.
>
> У любителя шела то не было??
> Я вот с первого раза написал
> printf "%02x%02x",$RANDOM,$RANDOM
> и получил полную фигню
Настоящий любитель shell такого не напишет, всё же. Привычки восстанут.

> На самом деле я знаю как дело было.

> Они оба выяснили, что под рукой есть
> только свежепоставленная винда без доступа к сети
> Тогда С-шник в полном пролёте.
> Действительно жестокий облом.
> Любителю же шелла тоже прийдётся непросто, я так думаю.
Если любитель shell — администратор web-сервера, а любитель C пишет для
микроконтроллеров, то у любителя shell большая фора.
Posted via RSDN NNTP Server 2.1 beta
Re: Случайные числа, языки программирования и Интернет.
От: e-Xecutor Россия  
Дата: 31.01.07 09:16
Оценка:
Здравствуйте, raskin, Вы писали:

А слабо тоже самое, но в виде батничка для cmd.exe от winxp
Без использования сторонних утилит.

P.S. мне не слабо
Re[2]: Случайные числа, языки программирования и Интернет.
От: Young yunoshev.ru
Дата: 31.01.07 11:51
Оценка:
Здравствуйте, e-Xecutor, Вы писали:

EX>Здравствуйте, raskin, Вы писали:


EX>А слабо тоже самое, но в виде батничка для cmd.exe от winxp

EX>Без использования сторонних утилит.

EX>P.S. мне не слабо



Echo %RANDOM%%RANDOM% ???
Re[3]: Случайные числа, языки программирования и Интернет.
От: Roman Odaisky Украина  
Дата: 31.01.07 12:59
Оценка:
Здравствуйте, Young, Вы писали:

EX>>А слабо тоже самое, но в виде батничка для cmd.exe от winxp

EX>>Без использования сторонних утилит.

Y>Echo %RANDOM%%RANDOM% ???


Там требовались шестнадцатеричные числа.

   @Echo Off
    SetLocal EnableDelayedExpansion
::                                                        --v-- пробел
    Set cmd=SetLocal ^& Set xdigits=0123456789abcdef ^& Echo 
    Set /a i="%~1"

:again
    If %i% NEQ 0 (
        Set /a digit="%RANDOM% %% 16"
        Set cmd=!cmd!%%xdigits:~!digit!,1%%

        Set /a i="i - 1"
        Goto :again
    )

    cmd /c "!cmd!"
До последнего не верил в пирамиду Лебедева.
Re[4]: Случайные числа, языки программирования и Интернет.
От: Young yunoshev.ru
Дата: 31.01.07 13:06
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Young, Вы писали:


EX>>>А слабо тоже самое, но в виде батничка для cmd.exe от winxp

EX>>>Без использования сторонних утилит.

Y>>Echo %RANDOM%%RANDOM% ???


Ээээ...там сказанно что требуеться строка из HEX символов....

Кто скажет что 4432776 состоит не из НEX символов.

Вообщем мой код условю задачи удолетворят — он выводит случайную строку из 8 HEX символов.
Re[3]: Случайные числа, языки программирования и Интернет.
От: e-Xecutor Россия  
Дата: 01.02.07 08:51
Оценка:
Здравствуйте, Young, Вы писали:

Y>Здравствуйте, e-Xecutor, Вы писали:


EX>>Здравствуйте, raskin, Вы писали:


EX>>А слабо тоже самое, но в виде батничка для cmd.exe от winxp

EX>>Без использования сторонних утилит.

EX>>P.S. мне не слабо



Y>Echo %RANDOM%%RANDOM% ???


Вообще-то будет от 2-х до 10-ти символов.
Требовалось 8-мь.
Re[4]: Случайные числа, языки программирования и Интернет.
От: e-Xecutor Россия  
Дата: 01.02.07 09:09
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Young, Вы писали:


EX>>>А слабо тоже самое, но в виде батничка для cmd.exe от winxp

EX>>>Без использования сторонних утилит.

Y>>Echo %RANDOM%%RANDOM% ???


RO>Там требовались шестнадцатеричные числа.


RO>
RO>   @Echo Off
RO>    SetLocal EnableDelayedExpansion
RO>::                                                        --v-- пробел
RO>    Set cmd=SetLocal ^& Set xdigits=0123456789abcdef ^& Echo 
RO>    Set /a i="%~1"

RO>:again
RO>    If %i% NEQ 0 (
RO>        Set /a digit="%RANDOM% %% 16"
RO>        Set cmd=!cmd!%%xdigits:~!digit!,1%%

RO>        Set /a i="i - 1"
RO>        Goto :again
RO>    )

RO>    cmd /c "!cmd!"
RO>

Как-то сложно
@echo off
setlocal ENABLEDELAYEDEXPANSION
set hex=0123456789ABCDEF
for /L %%i in (1,1,8) do (
set /A x="!random!&15"
call :digit !x!
set res=!res!!ret!
)
echo %res%
:digit
set ret=!hex:~%1,1!
exit /b
Re[5]: Случайные числа, языки программирования и Интернет.
От: Кодт Россия  
Дата: 01.02.07 12:13
Оценка:
Здравствуйте, e-Xecutor, Вы писали:

Можно и ещё проще, без танцев с передачей/возвратом параметра
@echo off
setlocal enabledelayedexpansion

set dict=0123456789ABCDEF
set v=

for /l %%i in (1,1,8) do call :add
echo %v%
exit /b

:add
set /a n=%random% %% 16
set v=%v%!dict:~%n%,1!
exit /b

Без enabledelayedexpansion тоже можно повыкручиваться
@echo off

set dict=0123456789ABCDEF

set v=
for /l %%i in (1,1,8) do call :add
echo %v%
exit /b

:add
set /a n=%random% %% 16
:: вот такой хитрый способ отложить выполнение 
call set v=%%v%%%%dict:~%n%,1%%
exit /b

Сплавив оба подхода, получаем
@echo off

set dict=0123456789ABCDEF

setlocal enabledelayedexpansion

for /l %%i in (1,1,8) do (
    set /a n=!random! %% 16
    call set v=!v!%%dict:~!n!,1%%
)
echo %v%
exit /b
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: Случайные числа, языки программирования и Интернет.
От: raskin Россия  
Дата: 01.02.07 12:16
Оценка:
raskin wrote:
> Вася и Петя хотели завести по почтовому ящику на бесплатном сервере так,
> чтобы имя заведомо было свободно и даже — смерть спаму! — не упоминалось
> в Интернет. Вася предложил написать программку, которая напечатает
> случайную шестнадцатеричную строку в 8 символов, и взять её за имя. Так
> и сделали, каждый на любимом языке — Вася на Си (можно было и на
> Паскаль), а Петя на unix shell (хотя мог и на Perl). Вопрос: кто из них
> жестоко обломался?

Признаюсь, что я имел в виду.

Мне не удалось написать программы на shell без очевидных сокращений,
результат работы которой, несмотря на использование работы с
псевдослучайными числами, был бы из маленького множества при любом
количестве запусков и хорошо искался бы в Internet (при достаточной
длине). А вот все функции в библиотеке Си необходимо инициализировать,
причём 6b8b4567 вполне неплохо ищется в Интернете.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Я ззнаю кто не обломался :)
От: FirstStep Россия  
Дата: 03.03.07 01:15
Оценка:
Здравствуйте, Erop, Вы писали:

E>Так что если ты не сделаешь как-то две копии одной сетевой карточки и не будешь химичить со временем, то каждая следующая генерация UID'а сгенерит тебе уникальный ID. В мировых масштабах


Как-то привезли 16 рабочих станций с дешёвыми сетевухами. Так вот, MAC адрес был один и тот же у всех Да и сетевой может на компе элементарно не быть, хоть и редкость такое в наши дни.
Re[5]: Я ззнаю кто не обломался :)
От: Erop Россия  
Дата: 03.03.07 13:41
Оценка:
Здравствуйте, FirstStep, Вы писали:

FS>Как-то привезли 16 рабочих станций с дешёвыми сетевухами. Так вот, MAC адрес был один и тот же у всех Да и сетевой может на компе элементарно не быть, хоть и редкость такое в наши дни.

А нет по модему?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: если дело не в srand()
От: raskin Россия  
Дата: 03.03.07 20:16
Оценка:
_pk_sly wrote:
> R>На самом деле у одного из товарищей шанса обломаться практически не
> R>было, а другой мог ошибиться — и ошибся.
>
> имется ввиду RAND_MAX, который в некоторых реализациях равен 32768?
Я думал не про это. А что фатального даст маленький RAND_MAX? Потерю
разрядности случайных битов? Это ещё не жестоко.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: если дело не в srand()
От: raskin Россия  
Дата: 03.03.07 20:18
Оценка:
_pk_sly wrote:
А про subj — в нём. Если делать не думая и его забыть, то результат
ловится в сети пачками.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Я ззнаю кто не обломался :)
От: vortex Украина  
Дата: 05.03.07 19:29
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, raskin, Вы писали:


R>>Да ладно, обычное разгильдяйство второпях. Не мог же человек на shell не

R>>обогнать любителя С в два раза, не мог же любитель С позорно отстать в
R>>четыре раза от shell...

E>Да не обязательно, вообще-то


>>> Я знаю, кто не обломался -- тот, кто догадался в качестве уникального ID

>>> использовать сгенирированный для этого UID
R>>Он не обломался — он заломался. Я вот тоже раньше заводил имена по 8
R>>байт энтропии, потом достало, перешёл на описанные в задаче 4 байта
R>>энтропии (8 символов). Кстати, GUID, созданные на одной машине, нельзя
R>>распознать как таковые?

E>Не понял вопроса

E>Вообще-то про UID'ы гарантируют, что они уникальны. Не "мала вероятность совпадения", а гарнатируется уникальность.

E>Достигается это тем, что в UID'е используют уникальный ID аппаратуры компа + время генерации + порядковый номер.

E>Так что если ты не сделаешь как-то две копии одной сетевой карточки и не будешь химичить со временем, то каждая следующая генерация UID'а сгенерит тебе уникальный ID. В мировых масштабах


Всё зависит от того какой это GUID. Есть определенная вероятность совпадения.

http://www.ietf.org/rfc/rfc4122.txt
http://www.famkruithof.net/guid-uuid-make.html
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.