"Поймать" ГСЧ - реально? ID:19671 |
Чт, 29 июня 2006 11:49 [#] [») |
|
|
Здравствуйте, уважаемы форумчане! Я человек в этом деле новый (играю в рулетку около 3-4-х месяцев), стараюсь развиваться в этом направлении поэтому регулярно читаю ваш форум (надо отметить, наиболее конструктивный и информативный чем все, которые я видел). И у меня возник один вопрос, который мучает меня уже довольно давно: понятно, что двух совершенно одинаковых ГСЧ не бывает (то есть нету 2-х ГСЧ, генерирующих одинаковые числа в один и тот же момент времени). Все они ведь чем-то отличаются (например, алгоритмом генерации, мне кажется). И поэтому меня очень интересует: а можно ли "поймать" какой то конкретый ГСЧ на лично его каких-то "фишках"? Например, если при определенных обстоятельствах выпадают совершенно определенные числа, дюжины или цвета и т.д. Очень хотелось бы услышать мнение по этому вопросу.
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19673 ответ на 19671 |
Чт, 29 июня 2006 12:08 («] [#] [») |
|
|
sniff писал чт, 29 июня 2006 12:49 | И поэтому меня очень интересует: а можно ли "поймать" какой то конкретый ГСЧ на лично его каких-то "фишках"? Например, если при определенных обстоятельствах выпадают совершенно определенные числа, дюжины или цвета и т.д. Очень хотелось бы услышать мнение по этому вопросу. | Если рассматривать реальную-механическую "рулетку" как псевдо-генератор случайных чисел, то попытаться поймать можно.
Думаю, что в скором времени выложу программу - "кладоискатель", которая по статистике определяет "пристрастные" колеса. Думаю, что в ДЕМО версии будут анализироваться статистики до 200-370 спинов. А в реальной версии думаю удасться "потолок" длины статистики увеличить до 1700-3700 спинов.
Планирую, что поиск пристастных секторов будет вестись, на сектора от 1 номера до 18. При этом пристастия будут вестись как на "фаворитов", так и на "аутсайдеров" статистики.
Надеюсь работу завершу в течении 2-х - 3-х месяцев.
ЗЫ: Реальный ГСЧ надо ловить на сектора, а не на ставки в поле. Искать "перекосы" в интернет-ГСЧ, лично мне, кажется абсурдным и не перспективным.
ЗЫ2: Демо версию программы, по её завершению выложу на форум.
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19674 ответ на 19671 |
Чт, 29 июня 2006 12:56 («] [#] [») |
|
|
В программе-анализаторе статистики будут заложенны принципы анализа "пристрастий" описанные в книге Е.Терентьева, но анализ будет делаться для любых выборок от 37 до 2000 спинов (демо версия от 37 до 370 спинов), на сектора от 1 до 18 номеров.
При этом, статистику можно подключать из файлов (точнее из списка файлов).
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19675 ответ на 19671 |
Чт, 29 июня 2006 15:33 («] [#] [») |
|
|
CLON писал чт, 29 июня 2006 13:08 | Надеюсь работу завершу в течении 2-х - 3-х месяцев. | Не скромный такой вопрос: почему так долго? 4K спинов = 0.0038 Mb стат. данных.. тут работы максимум на дня два, имхо.. Может помочь чем?
P.S. Если надумаешь связываться с БД, попробую Firebird (почти тоже что InterBase, но с бесплатной лицензией).
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19677 ответ на 19671 |
Чт, 29 июня 2006 16:21 («] [#] [») |
|
|
Во первых - все упирается в проблемму вычисления факториалов больше 1753! (for extended) и 170! (for real).
Во вторых - элементарная не хватка времени. 2-3 месяца - это в лучшем случае. На работе полный "аврал" на 2-3 недели. В семейной жизни от месяца и до полугода. На учебе от сентября до Нового Года. Поэтому работа продвигается медленно (максимум 1-2 часа в день). Хотя все основные функции анализатора уже написал, остается только "сервис" в работе с БД.
В третьих - возникли не которые вопросы при перепроверке таблиц в книге Е. Терентьева. Автор (Е.Т.) пока не дал ответа почему такие рассхождения. Ждем-с.
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19678 ответ на 19671 |
Чт, 29 июня 2006 16:46 («] [#] [») |
|
|
CLON писал чт, 29 июня 2006 17:21 | все упирается в проблемму вычисления факториалов больше 1753! (for extended) и 170! (for real) | CLON, создай один раз массив FACT от 1 до 1753 со значениями факториалов и просто бери оттуда значения, когда потребуется.
FACT(1)=1
FACT(2)=2
FACT(3)=6
....
итд
Инициализировать этот массив можно как
FACT(1)=1
for i=2 to 1753
FACT(i)=FACT(i-1)*i
next i
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19679 ответ на 19671 |
Чт, 29 июня 2006 17:03 («] [#] [») |
|
|
Jack Daw, зачем все так усложнять?
Пишешь функцию Факториал и все. Ни каких проблемм. Потом, только вызываешь в теле программы. Хотя я пошел еще дальше, написал все функции: Факториал (рекурсивный), а^b, РБернули, РБернилиИнтеграл и Р37.
Например: РБернули(н, х - "интеджер", р - "реал") : "экстендед".
В данную функцию "вкладываешь" функции Факториал и а^b.
Остальное дело техники. Проблемма в том, что компьютер не вычисляет факториалы больше 1753!, т.к. результат вычисления такого факториала выходит за предел "экстендед". Но и данный момент можно обойти заменив C(n-x)=n!/(x!*(n-x)!) to C(n-x)=П(n - n+1-x)/x!
Эта замена позволяет расширить диаппазон, но на "больших" секторах это не помогает. Хотя 1750! >> 170! Поэтому анализировать статистику на 1750 спинов гораздо лучше, чем 170 спинов.
Но как например взять факториал 5000! ????????????????
Или упростить выражения: C(n-x)=n!/(x!*(n-x)!) to C(n-x)=П(n - n+1-x)/x! ??????????????????
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19680 ответ на 19671 |
Чт, 29 июня 2006 17:12 («] [#] [») |
|
|
Зачем тебе тип extended, если результат будет целочисленный?
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19682 ответ на 19671 |
Чт, 29 июня 2006 17:20 («] [#] [») |
|
|
CLON писал чт, 29 июня 2006 18:03 | Jack Daw, зачем все так усложнять?
Пишешь функцию Факториал и все. Ни каких проблемм. Потом, только вызываешь в теле программы. | Изначально я понял проблему так, что программа медленно вычисляет значение факториала.
Поэтому предложил вариант не вычислять каждый раз факториал заново, а просто брать значение из ячейки массива.
Если проблем с быстродейтвием нет, то вопрос снят.
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19683 ответ на 19671 |
Чт, 29 июня 2006 17:22 («] [#] [») |
|
|
Sharky писал чт, 29 июня 2006 18:12 | Зачем тебе тип extended, если результат будет целочисленный? | Результат то целочисленный, только какие еще из вещественных типов поддерживают числа величиной в 10^4950???????
Ответа не требуется - сегодня посмотрю в "ХЕЛПЕ" описание параметров вещественных чисел. Может и заменю "экстендед", на что-нибудь из вещественных, если там будут подходящие диаппазоны.
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19684 ответ на 19671 |
Чт, 29 июня 2006 17:27 («] [#] [») |
|
|
Jack Daw писал чт, 29 июня 2006 18:20 | Поэтому предложил вариант не вычислять каждый раз факториал заново, а просто брать значение из ячейки массива. |
Очень правильная мысль.
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19688 ответ на 19671 |
Чт, 29 июня 2006 18:35 («] [#] [») |
|
|
Sharky писал чт, 29 июня 2006 18:12 | Зачем тебе тип extended, если результат будет целочисленный? | Ответ: целочисленные типы не позволяют решить задачу из-за ограниченности диаппазонов.
Цитата из Делфи:
An integer type represents a subset of the whole numbers. The generic integer types are Integer and Cardinal; use these whenever possible, since they result in the best performance for the underlying CPU and operating system. The table below gives their ranges and storage formats for the current 32-bit Delphi compiler.
Generic integer types for 32-bit implementations of Delphi
Type Range Format
Integer -2147483648..2147483647 signed 32-bit
Cardinal 0..4294967295 unsigned 32-bit
Fundamental integer types include Shortint, Smallint, Longint, Int64, Byte, Word, and Longword.
Fundamental integer types
Type Range Format
Shortint -128..127 signed 8-bit
Smallint -32768..32767 signed 16-bit
Longint -2147483648..2147483647 signed 32-bit
Int64 -2^63..2^63-1 signed 64-bit
Byte 0..255 unsigned 8-bit
Word 0..65535 unsigned 16-bit
Longword 0..4294967295 unsigned 32-bit
In general, arithmetic operations on integers return a value of type Integer--which, in its current implementation, is equivalent to the 32-bit Longint. Operations return a value of type Int64 only when performed on one or more Int64 operand. Hence the following code produces incorrect results.
Зато вещественные числа имеют более широкие диаппазоны.
Цитата из "Делфи":
A real type defines a set of numbers that can be represented with floating-point notation. The table below gives the ranges and storage formats for the fundamental real types.
Fundamental real types
Type Range Significant digits Size in bytes
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
<font color="red">Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10</font>
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8
The generic type Real, in its current implementation, is equivalent to Double.
Этим и обьясняется "необходимость" использовать "Экстендед" вместо "Интеджер".
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19689 ответ на 19671 |
Чт, 29 июня 2006 18:41 («] [#] [») |
|
|
Clon,
Чета я не понял, как ты вычислил факториал «1700!»?
Ты уверен, что правильно?
clon, снял вопрос -- я тормознул
удали две нижних темы
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19697 ответ на 19671 |
Пт, 30 июня 2006 08:40 («] [#] [») |
|
|
А какая точность нужна при вычислении факториала?
Может формула Стирлинга подойдёт?
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19699 ответ на 19671 |
Пт, 30 июня 2006 08:58 («] [#] [») |
|
|
CorwinXX писал пт, 30 июня 2006 09:40 | А какая точность нужна при вычислении факториала?
Может формула Стирлинга подойдёт? | А что за формула Стирлинга? Можешь просветить?
О точности пока судить не могу, но если будет формула, то протестирую её на точность.
ЗЫ: Проблемма не в вычислении величины факторала, а в переполнении численного ряда. Т.е. комп не может рассчитать данный факториал из-за ОГРОМНОСТИ ответа.
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19700 ответ на 19671 |
Пт, 30 июня 2006 09:22 («] [#] [») |
|
|
Например, на этой странице в самом низу:
<a rel="nofollow" href="http://newasp.omskreg.ru/probability/cgi-bin/pt_rus/ptcgi.ex" target="_blank">http://newasp.omskreg.ru/probability...t_rus/ptcgi.ex e?9024</a>
Что касается огромного значения:
Вряд ли тебе нужно такое большое число. Полагаю, что это всего лишь промежуточный результат, и дальше ты будешь делить его на что-нибудь. Тогда можно представить факториал в виде произведения двух чисел. Например, перемножать отдельно чётные и нечётные множители. Так ты сможешь вычислять факторилы до (10^4932)^2, то есть до 10^9800. Главное потом в вычислениях сделать деление до умножения, чтобы не было переполнения.
Можно пойти более универсальным путём. Отдельно вычислять основание и отдельно степень результата.
То есть, во время вычислений ты сравниваешь текущее значение с sqrt(MAX_EXTENDED_NUMBER) и "скидываешь" степень в специальную переменную.
Пример:
a = b * c
if(abs(a) > 10^2400) { a = a/(10^2400); exp += 2400 }
В переменной a у нас результат вычислений, но его нужно будет в конце домножить на 10^exp. (В переменной exp у нас порядок результата).
з.ы. Поправил - второе сравнение не нужно.
з.з.ы. Ну и понятно, что 10^2400 и 2400 будут сидеть в константах, а не вычисляться каждый раз.
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19701 ответ на 19671 |
Пт, 30 июня 2006 09:49 («] [#] [») |
|
|
CorwinXX, Огромное спасибо. Интересные идеи.
Со временем обязательно ими воспользуюсь. Пока хватает и 1750 спинов. Но со временем обязательно "расширю выборку" поиска пристрастий колеса, хотя бы до 3700 спинов.
Особенно понравилась идея "пошагового разделения".
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19703 ответ на 19671 |
Пт, 30 июня 2006 12:11 («] [#] [») |
|
|
Проверил идею разбиения действий на промежуточные.
Получил интересный результат.
Если брать формулу в "лоб", то макимум, что можно было "выжать" из вещественного "реал" был 170!
Перейдя к методу разбиений действий, решение удалось расширить до 1029! при том же ограничении на "реал" 1.7*10^307.
Теперь думаю на экстендед можно будет с "легкостью" получить анализатор статистики до 10 000 спинов, т.е. на порядок больше, т.к. максимум экстендед 1.1*10^4932.
Это радует.
|
|
|
|
Re: "Поймать" ГСЧ - реально? ID:19711 ответ на 19671 |
Пт, 30 июня 2006 20:03 («] [#] [») |
|
|
IDS, спасибо, но я нашел другой более простой путь (для себя). Теперь факториалы до 10 000 не представляют проблемм, хотя я наверное ограничусь и 3700 спинами.
Время покажет, но всеравно спасибо.
ЗЫ: Локальная теорема Лапласа не дает "точных" результатов.
|
|
|