Здравствуйте, Cyberax, Вы писали:
C>На однопроцессорном компьютере такой алгоритм будет очень предсказуем. На многопроцессорных — тоже.
Мне все-таки было бы интересно узнать конкретно как его можно предсказать?
C>Посмотрите как сделан /dev/random в Линуксе, например.
Не буду смотреть так как не в этом дело..
Re[10]: Придумал способ получать действительно случайные чис
Здравствуйте, sikorsky, Вы писали:
S>Стоп. Если алгоритм случайных чисел выдаст вдруг подряд 10 одинаковых чисел, он плох? В реальной жизни так бывает.
Он хорош, если, грубо говоря, последовательность из 10 единиц (предположим, что выход — бинарный) встречается в нём с частотой 1/2^10.
Re[10]: Придумал способ получать действительно случайные чис
[]
S>+ тогда можно говорить о причино-следственной связи и тогда не нет в мире ничего случайного вообще. Я не шучу щас. И даже хардверные генераторы не случайны
Здравствуйте, deniok, Вы писали:
D>Он хорош, если, грубо говоря, последовательность из 10 единиц (предположим, что выход — бинарный) встречается в нём с частотой 1/2^10.
Так а о том и речь, что вряд-ли предложенный алгоритм способен сгенерировать подряд 10 одинаковых строк длинной 20 000 символов. Да даже и две. А уж как эти разные строки привести к удобному выводимому результату (например, к 0м и 1м), это другой вопрос. Главное, что за основу берется непредсказуемая штука, а не, как в случае с систем.рандом, текущее время (если, конечно, не определено другое)
Re[10]: Придумал способ получать действительно случайные чис
Здравствуйте, sikorsky, Вы писали:
S>+ тогда можно говорить о причино-следственной связи и тогда не нет в мире ничего случайного вообще. Я не шучу щас. И даже хардверные генераторы не случайны
Современная квантовая механика базируется на постулате, что истинно случайные процессы все-таки есть.
Re[3]: Придумал способ получать действительно случайные числ
Здравствуйте, sikorsky, Вы писали:
C>>На однопроцессорном компьютере такой алгоритм будет очень предсказуем. На многопроцессорных — тоже. S>Мне все-таки было бы интересно узнать конкретно как его можно предсказать?
Прогнать алгоритм на похожем компьютере — и посмотреть что получаться будет.
Для криптоатаки часто будет достаточно знания поведения последовательности "случайных" чисел. Почитайте, например, как американцы вскрывали наши one-time pad'ы из-за дефектного ГСЧ.
C>>Посмотрите как сделан /dev/random в Линуксе, например. S>Не буду смотреть так как не в этом дело..
-1, непризнаный гений.
Sapienti sat!
Re[12]: Придумал способ получать действительно случайные чис
Здравствуйте, sikorsky, Вы писали:
S>Здравствуйте, deniok, Вы писали:
D>>Он хорош, если, грубо говоря, последовательность из 10 единиц (предположим, что выход — бинарный) встречается в нём с частотой 1/2^10.
S>Так а о том и речь, что вряд-ли предложенный алгоритм способен сгенерировать подряд 10 одинаковых строк длинной 20 000 символов. Да даже и две. А уж как эти разные строки привести к удобному выводимому результату (например, к 0м и 1м), это другой вопрос. Главное, что за основу берется непредсказуемая штука, а не, как в случае с систем.рандом, текущее время (если, конечно, не определено другое)
Вопрос как раз в мере непредсказуемости. Для идеального источника "случайности" энтропия должна быть максимальна. Тебе уже приводили ссылки на тесты — погоняй результаты своего генератора на приличном test suite. А ещё лучше — почитай учебники.
Re[11]: Придумал способ получать действительно случайные чис
К>>Какое распределение? К>>Какие тесты случайности проходят? К>>Если на эти вопросы ответа нет, то в библиотеку и читать Кнута (или что-то подобное, по-вкусу)
S>Распределение количества 0 и 1 в результирующей строке каждый раз будет разным, потому как если два потока одновременно что-то делают, то нет возможности предсказать когда конкретный поток получит свой квант процессорног времени. Да и окружение в котором работает программа вряд ли можно воспроизвести.
Бог весть какой секрет
А всё-таки интересно было бы узнать насколько же случайной получается последовательность.
Есть разные тесты для проверки случайности. Интересно было бы глянуть какие проходятся, а какие нет.
Иначе ценность даже не нулевая, а отрицательная. За использования генератора без известных характеристик
нужно (убивать, закапывать, кастрировать, гладить по головке, повышать в должности, давать в морду)-ненужное зачеркнуть.
Re[4]: Придумал способ получать действительно случайные числ
[]
К>А всё-таки интересно было бы узнать насколько же случайной получается последовательность. К>Есть разные тесты для проверки случайности. Интересно было бы глянуть какие проходятся, а какие нет. К>Иначе ценность даже не нулевая, а отрицательная. За использования генератора без известных характеристик К>нужно (убивать, закапывать, кастрировать, гладить по головке, повышать в должности, давать в морду)-ненужное зачеркнуть.
Да чего там проверять Создал я Win Application в 2003 студии, добавил туда этот класс случайных чисел, переделал вывод в файл. В файле — 19 Кб одних нулей. И так при каждом вызове. Запускал из под студии прямо. Супер случайные числа Разбираться в чем дело не стал (подозреваю, что поток не отрабатывал, ну да плевать), но это показывает степень "случайности чисел", получаемых таким алгоритмом.
<< Рабство не отменено — оно сменилось 8-часовым рабочим днем. >>
Re: Придумал способ получать действительно случайные числа
Здравствуйте, sikorsky, Вы писали:
S>Метод RandomizedBit сейчас работает глупо. Распределение результатов в среднем не 50 на 50. Но это ОЧЕНЬ легко исправить. Достаточно получить хэш от результирующей строки и уже с этим хэшем производить вычисления. (при изменении строки хотя бы на один символ хэш будет абсолютно другим).
А как ты проверял что 50 на 50. У меня всего 1000 чисел минут 8 генерировались, и все единицы.
код:
static void Main(string[] args)
{
RealRnd rnd = new RealRnd();
int[] c = new int[2];
for (int i = 0; i < 1000; i++)
{
rnd.Compute();
int r = rnd.RandomizedBit;
c[r]++;
}
Console.WriteLine(c[0]);
Console.WriteLine(c[1]);
Console.ReadKey();
}
S>Ну что же, хотелось бы узнать мнения.
Говно
Re[2]: Придумал способ получать действительно случайные числ
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, sikorsky, Вы писали:
S>>Метод RandomizedBit сейчас работает глупо. Распределение результатов в среднем не 50 на 50. Но это ОЧЕНЬ легко исправить. Достаточно получить хэш от результирующей строки и уже с этим хэшем производить вычисления. (при изменении строки хотя бы на один символ хэш будет абсолютно другим). G>А как ты проверял что 50 на 50. У меня всего 1000 чисел минут 8 генерировались, и все единицы.
Здравствуйте, deniok, Вы писали:
D>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, sikorsky, Вы писали:
S>>>Метод RandomizedBit сейчас работает глупо. Распределение результатов в среднем не 50 на 50. Но это ОЧЕНЬ легко исправить. Достаточно получить хэш от результирующей строки и уже с этим хэшем производить вычисления. (при изменении строки хотя бы на один символ хэш будет абсолютно другим). G>>А как ты проверял что 50 на 50. У меня всего 1000 чисел минут 8 генерировались, и все единицы.
D>Ну вот, а здесь
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, sikorsky, Вы писали:
S>>Метод RandomizedBit сейчас работает глупо. Распределение результатов в среднем не 50 на 50. Но это ОЧЕНЬ легко исправить. Достаточно получить хэш от результирующей строки и уже с этим хэшем производить вычисления. (при изменении строки хотя бы на один символ хэш будет абсолютно другим). G>А как ты проверял что 50 на 50. У меня всего 1000 чисел минут 8 генерировались, и все единицы.
G>код: G>
G> static void Main(string[] args)
G> {
G> RealRnd rnd = new RealRnd();
G> int[] c = new int[2];
G> for (int i = 0; i < 1000; i++)
G> {
G> rnd.Compute();
G> int r = rnd.RandomizedBit;
G> c[r]++;
G> }
G> Console.WriteLine(c[0]);
G> Console.WriteLine(c[1]);
G> Console.ReadKey();
G> }
G>
S>>Ну что же, хотелось бы узнать мнения. G>Говно
Мда... Для начала можно было просто потрудиться и прочитать, что RandomizedBit просто пример! Суть не в этом свойстве.
Re: Придумал способ получать действительно случайные числа
Здравствуйте, sikorsky, Вы писали:
S>Короче. Я так понял что все всЁ понимают очень буквально. ОК. Завтра заменю свойство РАндомайздБит чем-то более реальным. Интересно.
Короче. Я не юзал RandomizeBit. Я смотрел в RandomizedString — одни нули. ОК. Сегодня же прекратите. А то уже неинтересно.
<< Грустно, когда идешь на кладбище. И уж особенно грустно — когда там остаешься. >>
Re: Придумал способ получать действительно случайные числа
Здравствуйте, sikorsky, Вы писали:
S>Здравствуйте!
S>Возможно, способ предложенный мной уже кому-то знаком. Однако, он пришел мне в голову буквально минут 30 назад (не украл ). Такого поиском вроде не нашел. Я его реализовал и проверил. Действительно, этот код дает возможность получения непредсказуемых (невоспроизводимых?) последовательностей! Для простоты сдел максимально просто. Класс позволяет получить случайный бит. 1 или 0.
Неиссякает поток Кулибиных, шлющих свои доказательства об изобретении вечного двигателя, о решении теоремы Ферма, и т.д и т.п. При этом у всех таких доказательств есть общее свойство, что в них не используется ничего сложнее, чем перенос в уравнении из левой части в правую, а у авторов отсутствует знакомство с элементарными работами, посвященными данному вопросу
Re[3]: Придумал способ получать действительно случайные числ
Здравствуйте, sikorsky, Вы писали:
S>>>Ну что же, хотелось бы узнать мнения. G>>Говно
Согласен с предыдущим оратором
S>Мда... Для начала можно было просто потрудиться и прочитать, что RandomizedBit просто пример! Суть не в этом свойстве.
Вообще то принято выкладывать алгоритмы в завершенном виде. Т.е. раз это генератор случайных чисел то у него обязательно должна быть функция, которая возвращает конечный результат. В данном случае некое случайное значение.
Так что отмазка не прокатила.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Придумал способ получать действительно случайные числ
Здравствуйте, Flamer, Вы писали:
S>>Короче. Я так понял что все всЁ понимают очень буквально. ОК. Завтра заменю свойство РАндомайздБит чем-то более реальным. Интересно. F>Короче. Я не юзал RandomizeBit. Я смотрел в RandomizedString — одни нули. ОК. Сегодня же прекратите. А то уже неинтересно.
Через это крайне интересует вопрос: а аффтар свой алгоритм вообще тестировал?