Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2013, 13:04   #71
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от DarkDen Посмотреть сообщение
Я бы рад, но все правильно баюсь не сделаю т. к. никогда не делал.
Как говорится, Не Боги горпшки обжигают.
Цитата:
Предположим, наихудший вариант.
А что Вы подразумеваете под наихудшим вариантом?
Цитата:
Как это исправить?
Что именно Вы собираетесь исправлять?
Цитата:
Изменять код нужно или что то другое?
Спасибо
Для начала нужно определиться, нужно ли вообще что-то исправлять, и если нужно - что именно.


Цитата:
Сообщение от Poma][a Посмотреть сообщение
А программа что-то выводит? Наверное, стоит дождаться окончания..
Увы, это не самый лучший совет, который можно дать.
Зачастую бывает, что прервать исполнение, внести коррективы и запустить заново - вариант намного лучше.
Если мне не изменяет память, кто-то оценивал время выполнения - порядка недели. Если оценки делались для загрузки процессора 100%, а по фату она 3%, то ожидаемое время выполнения - более полугода.
Естественно, погрешность оценки может составлять 2-3. Т.е. вполне можно ожидать, что существующими темпами программа не закончит считать и за год.

Последний раз редактировалось s-andriano; 26.05.2013 в 13:09.
s-andriano вне форума Ответить с цитированием
Старый 26.05.2013, 19:04   #72
DarkDen
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 38
По умолчанию

Наихудшим вариантом я считаю когда алгоритм будет считать медленно, когда данные не помещаются в оперативную память или по другой причине.
Спасибо
DarkDen вне форума Ответить с цитированием
Старый 26.05.2013, 19:32   #73
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от DarkDen Посмотреть сообщение
Наихудшим вариантом я считаю когда алгоритм будет считать медленно, когда данные не помещаются в оперативную память или по другой причине.
Спасибо
То есть целых 3 наихудших варианта?

Я надеюсь, не очень удивлю Вас, если сообщу, что для каждого из упомянутых вариантов существует несколько вариантов возможного решения. Причем, боюсь, ни один из этих возможных вариантов не будет подходить одновременно для хотя бы двух из упомянутых вариантов.

В общем, чудес не бывает - без точной диагностики причины назначить лечение невозможно.
s-andriano вне форума Ответить с цитированием
Старый 29.05.2013, 15:43   #74
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В ручном расчете исправил ошибку и получил вероятность 69907183944/635013559600~0,110088. Для проверки написал программу на D7. Расчет засунул в поток с самым низким приоритетом, чтобы не мешал работать. Запускал в течении недели на работе, общее время расчета ~ 46 часов на двухядернике AMD Athlon(tm) 64 X2 Dual Core Processor 4200+. Загрузка процессора ~50%. Если сделать в два потока, убрать некоторые излишества, связанные с визуализацией процесса расчета, возможно некоторую оптимизация алгоритма, то думаю часов за 30 (а то и меньше) можно было бы посчитать. Данные совпали. В архиве программа и ручной расчет. В ручном расчете из-за лени таблицу на 2-ом листе сформировал программно
Вложения
Тип файла: zip Rrr.zip (27.7 Кб, 11 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.05.2013, 22:12   #75
DarkDen
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 38
По умолчанию

Огромное спасибо.
Не скажите частные случаи указаные ниже учтены в расчётах, т. к. я не мог составить фомулу из-за частных случаев.

[QUOTE]Математически пробовал. Пришёл к тому, что одной, двумя формулами и теоремами теории вероятности и камбинаторики тут не отделаешся. И самое главное достаточно большая вероятнось ошибки. Есть "частые случаи" которые необходимо учесть.

Хотя бы этот.

Цитата:
Сообщение от DarkDen Посмотреть сообщение
Если в ячейках подряд расположены более чем 4 красных шара, то это считается событием? И если это рассматривать как событие, то сколько раз его считать?

Именно по этой причине я не мог составить математическую формулу, не знал какое колличество комбинаций необходимо исключить.
Если даже 2 или 3 раза за один расклад всех шаров, появляется комбинация из 4 красных шаров это считаеться одним событием, математическая формула которую я составил считала это разными событиями и в этом была ошибка.
Если не 4 а 5 красных шарв выполо подряд это считаеться не 2 а 1 событием.
Я думаю програмным методом эту задачу решить немного легче чем искать математическую формулу, но нужен безошибочный алгоритм.


Можно просто прозевать какой либо "частый случай" и не исключить нужное количество комбинаций или неправильно посчитать какое количество комбинаций нужно исключить т. к. идеальной формулы как я не сторался я не вывел, хотя мне помогал не один математик.
Спасибо
Скажите D7 - это дэлфи 7
Спасибо.
DarkDen вне форума Ответить с цитированием
Старый 31.05.2013, 22:20   #76
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Да, все частные случаи учтены. Delphi 7. Да, и результаты двух способов совпали, значит с большой вероятностью правильно. Для полного счастья посчитайте третьим Это карточные расклады? Ну 52 карты и прочее
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 31.05.2013 в 22:25.
Аватар вне форума Ответить с цитированием
Старый 04.06.2013, 23:06   #77
DarkDen
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 38
По умолчанию

Доброго времени суток. Я понимаю конечно, что вы итак для меня очень много сделали, над чем я бился долгое время. Но не могли бы вы мне помочь ещё раз?
Я не программист, если в паскале я ещё что то понимаю, то с делфи не знаком, хотя знаю что в двух языках есть что то похожее. Не могли бы вы изменить алгроитм так чтобы он расчитал при той же задаче не 4 подряд выпавших красных шара а 5?
Спасибо
DarkDen вне форума Ответить с цитированием
Старый 05.06.2013, 07:48   #78
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от DarkDen Посмотреть сообщение
если в паскале я ещё что то понимаю, то с делфи не знаком, хотя знаю что в двух языках есть что то похожее. Не могли бы вы изменить алгроитм так чтобы он расчитал при той же задаче не 4 подряд выпавших красных шара а 5?
Спасибо
С точки зрения этой задачи (изменение константы) все диалекты Паскаля, включая Делфи, полностью идентичны.
s-andriano вне форума Ответить с цитированием
Старый 05.06.2013, 08:43   #79
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дык для 5 и больше все уже подсчитано: разность суммы ячеек E1:E19 и суммы ячеек G1:G19 = 13 557 974 300

Если и прогой очень хочется пересчитать, то заменить условие для наращивания счетчика найденных комбинаций
Код:
    if ((lLast[05]=lLast[04]+1) and (lLast[04]=lLast[03]+1) and (lLast[03]=lLast[02]+1) and (lLast[02]=lLast[01]+1)) or
       ((lLast[06]=lLast[05]+1) and (lLast[05]=lLast[04]+1) and (lLast[04]=lLast[03]+1) and (lLast[03]=lLast[02]+1)) or
       ((lLast[07]=lLast[06]+1) and (lLast[06]=lLast[05]+1) and (lLast[05]=lLast[04]+1) and (lLast[04]=lLast[03]+1)) or
       ((lLast[08]=lLast[07]+1) and (lLast[07]=lLast[06]+1) and (lLast[06]=lLast[05]+1) and (lLast[05]=lLast[04]+1)) or
       ((lLast[09]=lLast[08]+1) and (lLast[08]=lLast[07]+1) and (lLast[07]=lLast[06]+1) and (lLast[06]=lLast[05]+1)) or
       ((lLast[10]=lLast[09]+1) and (lLast[09]=lLast[08]+1) and (lLast[08]=lLast[07]+1) and (lLast[07]=lLast[06]+1)) or
       ((lLast[11]=lLast[10]+1) and (lLast[10]=lLast[09]+1) and (lLast[09]=lLast[08]+1) and (lLast[08]=lLast[07]+1)) or
       ((lLast[12]=lLast[11]+1) and (lLast[11]=lLast[10]+1) and (lLast[10]=lLast[09]+1) and (lLast[09]=lLast[08]+1)) or
       ((lLast[13]=lLast[12]+1) and (lLast[12]=lLast[11]+1) and (lLast[11]=lLast[10]+1) and (lLast[10]=lLast[09]+1)) or
       ((lLast[01]=1) and (lLast[13]=52) and (((lLast[12]=51) and (lLast[11]=50) and (lLast[10]=49)) or
                                              ((lLast[02]=2)  and (lLast[12]=51) and (lLast[11]=50)) or
                                              ((lLast[03]=3)  and (lLast[02]=2)  and (lLast[12]=51)) or
                                              ((lLast[04]=4)  and (lLast[03]=3)  and (lLast[02]=2)))) then Inc(lFind);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 05.06.2013 в 09:11.
Аватар вне форума Ответить с цитированием
Старый 08.06.2013, 19:38   #80
DarkDen
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 38
По умолчанию

Я понял. Большое спасибо.
DarkDen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправить ошибку арифметического переполнения в алгоритме. DarkDen Паскаль, Turbo Pascal, PascalABC.NET 2 11.05.2013 13:16
как исправить ошибку? phasha Помощь студентам 0 11.01.2012 21:32
как исправить ошибку? aiktz Паскаль, Turbo Pascal, PascalABC.NET 3 24.09.2009 18:56
прога на Паскале помогите исправить ошибку:( Jeksik Помощь студентам 4 14.10.2008 18:21