LINUX.ORG.RU

Можно оцифровывать шум германиевого диода или показания счётчика Гейгера-Мюллера, которые случайны.

Deleted
()
Ответ на: комментарий от minakov

Дело в том, что до сего дня мне как-то не было необходимости интересоваться этим вопросом (разве что лет 15, а то и 20 назад). Поэтому, задавая этот вопрос, я надеялся, что понимающие в этом как-то оценят качество выдаваемых чисел предлагаемыми им средствами.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от Deleted

По моейму проще взять несколько байт из /dev/random и перевести к десятичному (или к какому ему надо) виду. Твой вариант тоже хорош, но слишком сложен, и не у всех пользователей будет такая же возможность. Хотя как DRM-защита вариант очень даже ничего.

ivanlex ★★★★★
()

Взгляни на SFMT, от него все писаются кипятком. Для плюсов есть реализация в randomlib.

schizoid ★★★
()

Intel и VIA(как минимум) делают процессоры с аппаратным генератором случайных чисел.

Elyas ★★★★★
()

Программные генераторы вроде бы все псевдослучайные. Для случайных нужно покупать железку.

dizza ★★★★★
()
Ответ на: комментарий от zloy_starper

все генераторы псевдослучайных чисел в принципе одинаковые: просто числовая последовательность. только числа должны быть «типа случайными» и удовлетворять равномерному распределению.

invy ★★★★★
()

Плюсую SFMT. Быстрая, удобная, числа хорошие.

oami ★★
()

я думаю /dev/urandom - именно то что тебе нужно. если не проканает то тебе скорее всего потребуется аппаратный генератор.

cvv ★★★★★
()

Неплохо бы прояснить зачем тебе нужны такие числа. Если нужно чтобы аудиоролики проигрываемые «типа случайным» образом не повторялись, надо взять их список, перетасовать, и играть последовательно.

Absurd ★★★
()

Нет, не понятно. «Хорошие» для метода Монте-Карло и для криптографии это, как говорят в Одессе, две большие разницы. Если для криптографии и возникает такой вопрос, то /dev/random, если для математики, то надо выбирать из различных вариантов в зависимости от условий задачи. Ну и читать Кнута.

rymis ★★
()
Ответ на: комментарий от quickquest

То есть распределение не известно заранее. Я как-то игрался с железкой, которая давала очень приличную гарантию на длину сообщение, в которой количество 0 и 1 50 на 50

dizza ★★★★★
()

«Хорошие» - понятие условное. Но, думаю, понятно, о чем речь.

Нет и нет. Понятие «хорошести» для случайных чисел вполне математически определено, и нет, совершенно непонятно о чем речь, пока не даны конкретные условия задачи.

morse ★★★★★
()
Ответ на: комментарий от dizza

То есть распределение не известно заранее.

Токовый шум (фликкер шум) имеет спектральную плотность 1/f. Радиус корреляции флуктуации, создающих шум 1/f, настолько мал, что измерить его не удалось: во всех опытах, в к-рых его пытались измерить, найдено лишь ограничение сверху для него.

Для ГСЧ используют ВЧ кусок гиперболы, условно считая его «белым».

в которой количество 0 и 1 50 на 50

Этого мало. Есть куча статистических критериев для разных задач.
Для наглядности иногда используют 2D визуальный анализ.

quickquest ★★★★★
()

Есть вариант: по требуемому закону распределения построить гистограмму с заданой длиной интервалов. А внутри интервалов генерировать равномерно. Полученный генератор «очень не плох» на малых выборках. Но есть отрицательное свойство - получается усеченная выборка. Но думаю такой генераторне стоит использовать в криптографии.

smexasyan
()

Генерировать случайные значения путём обработки фотографий декоративного светильника — лавовой лампы, которая непредсказуемым образом меняет облик каждую секунду.

Deathstalker ★★★★★
()

генерировать «хорошие» случайные числа

Если случайные - то самым простым аппаратным решением было бы использовать CPU, обладающий соответствующими инструкциями. Иначе можно взять дешевую вэб-камеру, закрыть объектив, а полученный шум подвергнуть дополнительной постобработке. Ведь даже интел не даёт «случайный» сигнал напрямую.

gag ★★★★★
()

Но, думаю, понятно, о чем речь.

ты не думай, а просто скажи.

psv1967 ★★★★★
()

Сишный rand() - достаточно хорошие случайные числа для большинства задач. /thread

legolegs ★★★★★
()
Ответ на: комментарий от morse

Нет, нет и нет. Понятие случайности нигде не определено. В теории вероятности школьно-вузовской оно вводится как понятие перпендикулярности множеств.

Для заданной задачи, требуется только перпендикулярный в данных условиях набор: либо перпендикулярный заданным, либо с определенной равномерностью.

«Случайностей не бывает.»

Математика наследует случайность из физической случайности. Приводились ниже примеры: один-эф шум это один из многих (довольно широкий - много подходит под него).

Один из самых общих и примерных генераторов - вихрь Мерсенна. Но он абсолютно не криптостойкий и даже не стойкий вообще. Иными словами, вычленить его коэффициенты можно оооочень быстро.

Вы найдете в вики его коды, а также о его использовании в ГСЛ. Я только могу подсказать, что смотря зачем, вам возможно и не нужны эти псевдорандомы, а возможно нужны квазислучайные. Об этом в википедии тоже есть.

sanaris
()
Последнее исправление: sanaris (всего исправлений: 2)
Ответ на: комментарий от morse

Нет и нет. Понятие «хорошести» для случайных чисел вполне математически определено, и нет, совершенно непонятно о чем речь, пока не даны конкретные условия задачи.

Тогда потрудись дать это определение «хорошести». Мне вот оно неизвестно

Waterlaz ★★★★★
()

Кстати, недостатки аппаратного генератора случайных чисел можно исправить, проXORив его результат с программных генератором псевдослучайных

Waterlaz ★★★★★
()
Ответ на: комментарий от ivanlex

и не у всех пользователей будет такая же возможность

Тащить из звуковухи сигнал микрофонного входа и оставлять из него младший бит.

Kuzz ★★★
()
Ответ на: комментарий от Waterlaz

Тогда потрудись дать это определение «хорошести». Мне вот оно неизвестно

В сколькимерном пространстве данная последовательность будет давать корректный ответ для интегрирования по методу монте-карло произвольной функции. Иначе говоря, в сколькимерном пространстве данная последовательность будет распределена равномерно. А вот как этот параметр зовется, я уже забыл. Вроде бы «порядок случайности».

morse ★★★★★
()
Ответ на: комментарий от Kuzz

А что делать тем, у кого нет звуковухи? Например на серверах?! А если программа предназначена для работы не только на десктопе, но и на сервере? Нужно всегда продумывать универсальные решения, изначально, что бы потом не городить костыли.

ivanlex ★★★★★
()
Ответ на: комментарий от ivanlex

Например на серверах?!

HW-генератор. В итоге получится программа, работающая со спец. устройством, но умеющая «вариант для бедных»

Kuzz ★★★
()
Ответ на: комментарий от psv1967

ха, то есть тебя устроит и невозрастающая последовательность обладающая данным свойством? :)

Какая-какая последовательность?

morse ★★★★★
()
Ответ на: комментарий от morse

включи мозг :) --- «отсортированная в порядке убывания» «случайная» последовательность?

псевдослучайные последовательности обеспечивают только статхарактеристики ряда (и то не все, найдется процедура которая явно дефект покажет на каких нибудь случайных блужданиях по такому генератору построенных).

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

включи мозг :) --- «отсортированная в порядке убывания» «случайная» последовательность?

Это была моя первая мысль, но я ее отмел как совсем уж очевидно кретинскую. Как любая такая последовательность может дать хоть сколько-нибудь корректный результат вычисления интеграла методом монте-карло хоть в скольки измерениях?

morse ★★★★★
()
Ответ на: комментарий от morse

когда она отсортирована по этим самым измерениям естественно. она ведь будет прекрасно считать интегралы?

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

нет, она не будет. если последовательность, к примеру, идет равномерно «сверху вниз» по области интегрирования, то она даст корректный результат только в один единственный момент: когда она равномерно дойдет до конца области. До этого момента ответ будет неверным, и после этого момента тоже.

И это не считая того, что как ты вообще технически собрался упорядочивать по возрастанию бесконечную последовательность чисел.

morse ★★★★★
()
Ответ на: комментарий от morse

В сколькимерном пространстве данная последовательность будет давать корректный ответ для интегрирования по методу монте-карло произвольной функции. Иначе говоря, в сколькимерном пространстве данная последовательность будет распределена равномерно. А вот как этот параметр зовется, я уже забыл. Вроде бы «порядок случайности».

Я думаю, что это неправильно. Уточни, что ты имеешь ввиду под методом Монте-Карло и я думаю, что смогу это показать.

И еще, мы говорим о генераторе целых чисел на каком-то диапазоне или действительных?

Waterlaz ★★★★★
()
Ответ на: комментарий от morse

какая она _бесконечная_ у псевдослучайных? :)

psv1967 ★★★★★
()
Ответ на: комментарий от Waterlaz

Я думаю, что это неправильно. Уточни, что ты имеешь ввиду под методом Монте-Карло и я думаю, что смогу это показать.

http://ru.wikipedia.org/wiki/Метод_Монте-Карло#.D0.93.D0.B5.D0.BE.D0.BC.D0.B5...

И еще, мы говорим о генераторе целых чисел на каком-то диапазоне или действительных?

Я рассматриваю ГСЧ с точки зрения математики а не конкретной реализации. Последовательность на множестве вещественных чисел.

morse ★★★★★
()
Ответ на: комментарий от morse

ну вот кривая гистограмма в простейшем случае получается

hist(replicate(100000,sum((0.5-runif(500))<0)))

hist(replicate(100000,sum((0.5-runif(500))>0)))

psv1967 ★★★★★
()
Ответ на: комментарий от morse

http://ru.wikipedia.org/wiki/Метод_Монте-Карло#.D0.93.D0.B5.D0.BE.D0.BC.D0.B5...

Это я знаю. Там нет нужных подробностей. Попробую угадать.

Рассматриваем генератор чисел от 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, то генератор хороший, а иначе - нет. Так?

Я рассматриваю ГСЧ с точки зрения математики а не конкретной реализации. Последовательность на множестве вещественных чисел.

Я с точки зрения математики и спрашиваю.

Waterlaz ★★★★★
()
Ответ на: комментарий от Waterlaz

Если брать такое определение, то не получается.

Возьмем последовательность, которая проходит такой тест x_1, x_2 ...

По ней построим последовательность y_1, y_2, ... следующим образом:

y_i = 0, если i - число Фиббоначи.

y_i = x_i, если i не равно ни одному из чисел Фиббоначи.

Очевидно, что последовательность y_i тоже пройдет тест, но она хреновая какая-то.

Waterlaz ★★★★★
()
Ответ на: комментарий от psv1967

Я не знаю что означают эти заклинания.

morse ★★★★★
()
Ответ на: комментарий от Waterlaz

Это число и есть результат интегрирования

Ну, его еще надо умножить на объем интегрирования, но в целом да.

И теперь если мат. ожидание этого числа стремится к интегралу, а дисперсия к нулю при k->\infty, то генератор хороший, а иначе - нет. Так?

Ээээ, какая-то лютая фигня. До бесконечности нам тащиться совершенно не надо, нам надо чтобы для любых достаточно больших N ошибка укладывалась в погрешность 1/sqrt(N).

Очевидно, что последовательность y_i тоже пройдет тест, но она хреновая какая-то.

Чем же она хреновая? Уже при i>=1000 ты ее и не отличишь от исходной.

morse ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.