Найти - Пользователи
Полная версия: Нужна помощь математиков. Про случайные числа
Начало » Python для экспертов » Нужна помощь математиков. Про случайные числа
1 2 3
ice
Доброго времени суток.

У меня есть ряд (лист, кортеж) чисел (случайных). Не важно, как они получены, пусть мне их возвращает какая-то неизвестная функция.

А как проверить являются ли они действительно случными? Вообще поискал по инету, нашел, что надо смотреть в сторону критерия Пирсона и еще какие-то критерии там есть. ТО есть я понимаю, что абсолютно случайных чисел нет, но как проверить, что вот этот ряд чисел укладывается в ожидание? (может, конечно, ерунду пишу, но должно же быть что-то).

Может есть какой алгоритм? что-то типа

def israndomlist(llist):
…….
return result

тоесть мне нужна не просто сама функция, а еще и понимание как она может быть устроена.

или не все так просто?

Вообще буду благодарен, если кто-то ссылкой поделится про случайные величины а до я из серии “для чайников” :)
Jenyay
Про случайные числа и их генераторы есть в одном из томов Кнута (не помню в каком именно). А вообще можно построить функцию распределения вероятностей (кажется так она называется, давно с этим сталкивался).
crchemist
Jenyay
Про случайные числа и их генераторы есть в одном из томов Кнута (не помню в каком именно)
в 2гому
ZZZ
Я не особо хороший математик, так что не пинайте сильно, но первой мыслью было получить среднее расстояние между двумя ближайшими членами. Чем оно больше, тем качество перемешивания будет более высоким.
Ferroman
ZZZ
Спрашивали не как сделать генератор, а проверить полученные числа на случайность.
Коче говоря или свой проверяет или чужой ;)
ice
Вообще чужой проверяю. Но не проверяю, а скорее сравниваю результаты.
Но как-то же должен быть способ проверки. тут нашел кое что http://cryptolog.ru/?Psevdosluchainye_posledovatelmznosti но там про генераторы как раз.

Еще ссылки

http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9_%D1%81%D0%BE%D0%B3%D0%BB%D0%B0%D1%81%D0%B8%D1%8F_%D0%9A%D0%BE%D0%BB%D0%BC%D0%BE%D0%B3%D0%BE%D1%80%D0%BE%D0%B2%D0%B0

http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9_%D1%81%D0%BE%D0%B3%D0%BB%D0%B0%D1%81%D0%B8%D1%8F_%D0%9F%D0%B8%D1%80%D1%81%D0%BE%D0%BD%D0%B0

Но я там вообще ничего не понимаю.
Андрей Светлов
Я себе это как-то иначе представлял. Обычная лаба по статистике.
Дано: последовательнось чисел (генератор).
Задача: определить, соответствует ли она заданному распределению и определить параметры этого распределения.

Если “на пальцах” - решается так:
- строим график, на оси абцисс числа, получаемые из генератора. На оси ординат - частота встречи. Т.е. если число попалось два раза - будет двойка.
- сетку абцисс выбираем так, чтобы не много и не мало было - лучше получить как минимум одно “попадание” на каждую ячейку.
- смотрим, похоже ли хоть примерно? Для нормального распределения должен быть классический “колокол” и т.д.
- играясь с параметрами распределения, подбираем такие, чтобы построенный график максимально соответствовал нашей картинке.
- потом можно определить “непохожесть”, посчитав корреляцию между теоретическим графиком и практическими результатами.

Конечно, все на самом деле излагается гораздо строже, но суть способа я попытался объяснить
ice
Андрей Светлов
Если “на пальцах” - решается так:
- строим график, на оси абцисс числа, получаемые из генератора. На оси ординат - частота встречи. Т.е. если число попалось два раза - будет двойка.
- сетку абцисс выбираем так, чтобы не много и не мало было - лучше получить как минимум одно “попадание” на каждую ячейку.
- смотрим, похоже ли хоть примерно? Для нормального распределения должен быть классический “колокол” и т.д.
- играясь с параметрами распределения, подбираем такие, чтобы построенный график максимально соответствовал нашей картинке.
- потом можно определить “непохожесть”, посчитав корреляцию между теоретическим графиком и практическими результатами.
Да, я график тоже строил, но псевдослучайная последовательность даст точно такой же график как эта же последовательность, но сортированная.

то есть 1 3 7 0 5 4 6 8 9 2 - это похоже на “случайные” числа, в то время как 0 1 2 3 4 5 6 7 8 9 нет.
Андрей Светлов
Тот же критерий Пирсона так и работает. Обе последовательности могут быть примерами равномерного распределения на интервале . Статистическим методам все равно. Вот если бы было 122205557 - к равномерному распределению подходило бы плохо.

Можешь поступить так. Теоретически твоя последовательность - бесконечная. Но если она удовлетворяет какому-либо распределению, то и любой ее кусок тоже (с большей ошибкой, конечно же). На практике то выражается в следующем: нарезаешь вход на сколько-то там выборок. Чисел по сто хотя бы (считают, что 30 - минимально необходимый размер, а ты перекрой его в несколько раз. Чем больше, тем лучше). Анализируй каждый кусок отдельно. Результаты должны быть похожими. Упорядоченная последовательность покажет совершенно разные параметры распределения для каждого своего куска.
Dimka665
ice
то есть 1 3 7 0 5 4 6 8 9 2 - это похоже на “случайные” числа, в то время как 0 1 2 3 4 5 6 7 8 9 нет.
и то и другое похоже на случайные числа. попробуй использовать стандартный модуль питона, чтобы получить последовательность 0 1 2 3 4 5 6 7 8 9. вероятность ее получить мала)))
но вероятность получить последовательность 1 3 7 0 5 4 6 8 9 2, точно такая же как и получить 0..9.

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

если распределение нормальное (ранее упомянутый “колокол”), то обе эти последовательности не похожи на случайные.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB