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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2015, 12:57   #1
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию Задача Золушки

Есть следующая практическая задача:

Имеется много конвертов, на каждом конверте 10-значное случайное число.
Нужно разделить конверты на две части:
первая часть ~ 1/10 от всей кучи;
вторая часть ~ 9/10 от всей кучи;

Признак разделения 10-значное число, которые забиты в программе (проверять только вручную).

Вполне возможно, что 1/10 нужная часть - идет подряд среди общей пачки, а может и нет.

Как максимально быстро найти нужный (хотя бы один конверт)???

Пока только одна идея: тщательно перетасовать конверты и проверять подряд, надеясь на теорию вероятности
(вероятность вытащить нужный конверт как раз 1/10, а перетасовав мы исключим случай,
что все нужные конверты находятся, например в конце пачки)
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 11.08.2015 в 13:01.
Niro вне форума Ответить с цитированием
Старый 11.08.2015, 13:04   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Я ничего не понял. Задача выглядит как: на глазок поделить кучу конвертов на две кучи. Маленькую, и ту, что в 9 раз больше. Кто такой искомый конверт, зачем делить на эти кучи, чего за числа в программе - ничего не понятно.
pu4koff вне форума Ответить с цитированием
Старый 11.08.2015, 13:09   #3
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Есть куча конвертов (пусть будет 100), отличаются друг от друга случайными числами, которые на них написаны.
"Правильных" конвертов - пусть будет 10 штук.
"Правильность" можно проверить вбив номер конверта в программу - она скажет нужный это конверт или нет.

Если просто перебирать конверты, вбивая числа - получается долго и муторно.
Нужно придумать способ, нахождения нужных конвертов за самое короткое время.
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 11.08.2015, 13:16   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

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

То есть может быть два типа задачи.
1) Имеем колоду 36 карт, среди них обязательно есть 4 туза.
2) Берем 100 колод по 36 карт, перемешиваем, выбираем из них 36 карт. Тогда среди них - не обязательно будут 4 туза.

Кстати, в обоих случаях наверное нет никакой особой стратегии поиска тузов.
Разве что, если в случае 1) проверили 32 карты, и в них ни одного туза, то оставшиеся 4 можно не проверять - там точно 4 туза.
А во втором случае надо проверять до конца.
type_Oleg вне форума Ответить с цитированием
Старый 11.08.2015, 13:19   #5
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Да, обязательно имеется некоторое (правда примерное) количество нужных конвертов.
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 11.08.2015, 13:21   #6
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

Цитата:
(вероятность вытащить нужный конверт как раз 1/10, а перетасовав мы исключим случай,
что все нужные конверты находятся, например в конце пачки)
Не исключаем, просто добавляем дополнительную работу. Если велика вероятность того, что конверты идут подряд, можно брать конверты с обоих концов, потом из середины, потом из середины половин и т д.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!

Последний раз редактировалось crazy horse; 11.08.2015 в 14:09.
crazy horse вне форума Ответить с цитированием
Старый 11.08.2015, 13:31   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Можно пробовать искать зависимость в искомых числах. Допустим окажется, что нужны конверты с номером 123ххххххх или только начинающиеся на 1,5 или 9. Три цифры уж любой дурак запомнит. Тогда человек сможет предварительно отсеять откровенно неподходящие конверты, а оставшиеся уже пробивать по программе. Остаётся вопрос в удобстве дополнительного перелопачивания конвертов и пользе такой фильтрации. А то может наборы данных такие, что этим только три конверта отсеется, а работы лишней много будет проделано.
Если есть набор чисел со всех 100 конвертов, то тут можно позагоняться на предмет формирования оптимальной стратегии. Можно будет командовать оператору, что мол найди-ка ты дружок для начала конверты, начинающиеся на 8, а в оставшихся уже копошись внимательнее
pu4koff вне форума Ответить с цитированием
Старый 11.08.2015, 13:39   #8
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

задача не про золошку, а про лоторею.

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

Цитата:
(вероятность вытащить нужный конверт как раз 1/10, а перетасовав мы исключим случай,
что все нужные конверты находятся, например в конце пачки)
почему? разве перетасовка не может иметь обратный эффект?
f.hump вне форума Ответить с цитированием
Старый 11.08.2015, 13:48   #9
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Я не понял, зачем перетасовывать.
Если заранее неизвестен порядок, то можно считать их уже перетасованными.
Или известно, что какое-то начальное неудачное расположение более вероятно ?
То есть более вероятно, что нужные конверты в самом конце ?
type_Oleg вне форума Ответить с цитированием
Старый 11.08.2015, 13:49   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Как вариант, по очереди брать письма с обеих концов стопки, таким образом время перебора сокращается вдвое. Если ещё от середины кучи поставить по курсору и вести в концам кучи, то время сокращается в 4 раза а вероятность найти нужное письмо многократно увеличивается. Курсоры и в тех блоках можно ставить, увеличите перебор ещё в 2 раза.

Последний раз редактировалось Человек_Борща; 11.08.2015 в 13:55.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC kimberly Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 17:03
задача на структуру(struct)/задача на работу с файлом SevenArth Помощь студентам 0 26.04.2012 19:06
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51