Дело в том, что до сего дня мне как-то не было необходимости интересоваться этим вопросом (разве что лет 15, а то и 20 назад). Поэтому, задавая этот вопрос, я надеялся, что понимающие в этом как-то оценят качество выдаваемых чисел предлагаемыми им средствами.
По моейму проще взять несколько байт из /dev/random и перевести к десятичному (или к какому ему надо) виду. Твой вариант тоже хорош, но слишком сложен, и не у всех пользователей будет такая же возможность. Хотя как DRM-защита вариант очень даже ничего.
все генераторы псевдослучайных чисел в принципе одинаковые: просто числовая последовательность. только числа должны быть «типа случайными» и удовлетворять равномерному распределению.
Неплохо бы прояснить зачем тебе нужны такие числа. Если нужно чтобы аудиоролики проигрываемые «типа случайным» образом не повторялись, надо взять их список, перетасовать, и играть последовательно.
Нет, не понятно. «Хорошие» для метода Монте-Карло и для криптографии это, как говорят в Одессе, две большие разницы. Если для криптографии и возникает такой вопрос, то /dev/random, если для математики, то надо выбирать из различных вариантов в зависимости от условий задачи. Ну и читать Кнута.
То есть распределение не известно заранее. Я как-то игрался с железкой, которая давала очень приличную гарантию на длину сообщение, в которой количество 0 и 1 50 на 50
«Хорошие» - понятие условное. Но, думаю, понятно, о чем речь.
Нет и нет. Понятие «хорошести» для случайных чисел вполне математически определено, и нет, совершенно непонятно о чем речь, пока не даны конкретные условия задачи.
Токовый шум (фликкер
шум) имеет спектральную плотность 1/f. Радиус корреляции флуктуации, создающих
шум 1/f, настолько мал, что измерить его не удалось: во всех опытах, в к-рых его
пытались измерить, найдено лишь ограничение сверху для него.
Для ГСЧ используют ВЧ кусок гиперболы, условно считая его «белым».
в которой количество 0 и 1 50 на 50
Этого мало. Есть куча статистических критериев для разных задач.
Для наглядности иногда используют
2D
визуальный анализ.
Есть вариант: по требуемому закону распределения построить гистограмму с заданой длиной интервалов. А внутри интервалов генерировать равномерно. Полученный генератор «очень не плох» на малых выборках. Но есть отрицательное свойство - получается усеченная выборка. Но думаю такой генераторне стоит использовать в криптографии.
Генерировать случайные значения путём обработки фотографий декоративного светильника — лавовой лампы, которая непредсказуемым образом меняет облик каждую секунду.
Если случайные - то самым простым аппаратным решением было бы использовать CPU, обладающий соответствующими инструкциями. Иначе можно взять дешевую вэб-камеру, закрыть объектив, а полученный шум подвергнуть дополнительной постобработке. Ведь даже интел не даёт «случайный» сигнал напрямую.
Нет, нет и нет. Понятие случайности нигде не определено.
В теории вероятности школьно-вузовской оно вводится как понятие перпендикулярности множеств.
Для заданной задачи, требуется только перпендикулярный в данных условиях набор: либо перпендикулярный заданным, либо с определенной равномерностью.
«Случайностей не бывает.»
Математика наследует случайность из физической случайности. Приводились ниже примеры: один-эф шум это один из многих (довольно широкий - много подходит под него).
Один из самых общих и примерных генераторов - вихрь Мерсенна.
Но он абсолютно не криптостойкий и даже не стойкий вообще. Иными словами, вычленить его коэффициенты можно оооочень быстро.
Вы найдете в вики его коды, а также о его использовании в ГСЛ.
Я только могу подсказать, что смотря зачем, вам возможно и не нужны эти псевдорандомы, а возможно нужны квазислучайные. Об этом в википедии тоже есть.
Нет и нет. Понятие «хорошести» для случайных чисел вполне математически определено, и нет, совершенно непонятно о чем речь, пока не даны конкретные условия задачи.
Тогда потрудись дать это определение «хорошести». Мне вот оно неизвестно
Тогда потрудись дать это определение «хорошести». Мне вот оно неизвестно
В сколькимерном пространстве данная последовательность будет давать корректный ответ для интегрирования по методу монте-карло произвольной функции. Иначе говоря, в сколькимерном пространстве данная последовательность будет распределена равномерно. А вот как этот параметр зовется, я уже забыл. Вроде бы «порядок случайности».
А что делать тем, у кого нет звуковухи? Например на серверах?! А если программа предназначена для работы не только на десктопе, но и на сервере? Нужно всегда продумывать универсальные решения, изначально, что бы потом не городить костыли.
включи мозг :) --- «отсортированная в порядке убывания» «случайная» последовательность?
псевдослучайные последовательности обеспечивают только статхарактеристики ряда (и то не все, найдется процедура которая явно дефект покажет на каких нибудь случайных блужданиях по такому генератору построенных).
включи мозг :) --- «отсортированная в порядке убывания» «случайная» последовательность?
Это была моя первая мысль, но я ее отмел как совсем уж очевидно кретинскую. Как любая такая последовательность может дать хоть сколько-нибудь корректный результат вычисления интеграла методом монте-карло хоть в скольки измерениях?
нет, она не будет. если последовательность, к примеру, идет равномерно «сверху вниз» по области интегрирования, то она даст корректный результат только в один единственный момент: когда она равномерно дойдет до конца области. До этого момента ответ будет неверным, и после этого момента тоже.
И это не считая того, что как ты вообще технически собрался упорядочивать по возрастанию бесконечную последовательность чисел.
В сколькимерном пространстве данная последовательность будет давать корректный ответ для интегрирования по методу монте-карло произвольной функции. Иначе говоря, в сколькимерном пространстве данная последовательность будет распределена равномерно. А вот как этот параметр зовется, я уже забыл. Вроде бы «порядок случайности».
Я думаю, что это неправильно. Уточни, что ты имеешь ввиду под методом Монте-Карло и я думаю, что смогу это показать.
И еще, мы говорим о генераторе целых чисел на каком-то диапазоне или действительных?
Это я знаю. Там нет нужных подробностей. Попробую угадать.
Рассматриваем генератор чисел от 0 до 1. Значение функции и все ее аргументы тоже принимают значение из [0, 1].
Тогда для функции n переменных f берём из случайно последовательности n+1 число (x_1, x_2, x_3, .., x_n, x_{n+1}), определяем выполняется ли f(x_1, .., x_n) < x_{n+1}. Повторяем это дело k раз и считаем число <количество раз, когда условие выполнилось>/k. Это число и есть результат интегрирования. И теперь если мат. ожидание этого числа стремится к интегралу, а дисперсия к нулю при k->\infty, то генератор хороший, а иначе - нет. Так?
Я рассматриваю ГСЧ с точки зрения математики а не конкретной реализации. Последовательность на множестве вещественных чисел.
Ну, его еще надо умножить на объем интегрирования, но в целом да.
И теперь если мат. ожидание этого числа стремится к интегралу, а дисперсия к нулю при k->\infty, то генератор хороший, а иначе - нет. Так?
Ээээ, какая-то лютая фигня. До бесконечности нам тащиться совершенно не надо, нам надо чтобы для любых достаточно больших N ошибка укладывалась в погрешность 1/sqrt(N).
Очевидно, что последовательность y_i тоже пройдет тест, но она хреновая какая-то.
Чем же она хреновая? Уже при i>=1000 ты ее и не отличишь от исходной.