Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск повторяющихся значений 
:(
    Опции темы
Alix36
Дата 27.2.2010, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 6.11.2006

Репутация: нет
Всего: 3



Есть некоторая функция(ascr) которая возвращает дробный флоат.
Необходимо найти номер итерации вызова этой функции на которой занчение возвращенное функцией будет повторным( появлялось в предыдущих итерациях) 
Проблема в том что такое число может попасться на 10^8 +7 итерации а может и на 10^9 .

Собственно изначально я хотел записывать элементы в массив и потом при каждой новой итерации парсить массив на наличие данного элемента. НО VS начала ругаться что не может создать массив  даже с INT_MAX элементов 
Вопрос первый: Можно ли обойти это ограничение?
Но у этого способа возможно будет недостаток. 
4байт*10^9 = 4000000000 байт = 3906250 кБайт = 3815 мБайт ~4гБайт
Т.е. чтобы программа отработала нужна машина с 4 гигабайтами Озу? или стерпиться 2 гига + 4 виртуальной?

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

Вопрос, что лучше все таки использовать? массивы или файлы?



--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
Фантом
Дата 27.2.2010, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Alix36 @  27.2.2010,  11:39 Найти цитируемый пост)
Есть некоторая функция(ascr) которая возвращает дробный флоат.
Необходимо найти номер итерации вызова этой функции на которой занчение возвращенное функцией будет повторным( появлялось в предыдущих итерациях) 
Проблема в том что такое число может попасться на 10^8 +7 итерации а может и на 10^9 .

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

P.S. Достаточно хороших решений у нее, по-видимому, просто нет, но есть сильное подозрение, что ее можно и не решать.
PM   Вверх
mes
Дата 27.2.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



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




--------------------
PM MAIL WWW   Вверх
chaos
Дата 27.2.2010, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



Alix36, что за функция-то такая? в нее передаются параметры? может проще выявить зависимость и дальше уже думать
PM WWW   Вверх
Alix36
Дата 27.2.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 6.11.2006

Репутация: нет
Всего: 3



функция - ПГСЧ на промежутке [-1,1]
её саму менять не могу (имеется только dll), соотв. исходника тоже нет. Так что зависимость неимея формулы вычислять не вариант.
Параметров нет. 
Необходимо найти "предел мощности", т.е. на каком вызове за dt функция начнет "повторяться"(выдавать результат который уже был).

2mes
немного не понял. Функция то одна. В принципе можно разбить на 2 операции. Сначала  генерировать файл с  результатами выполнения, а потом уже его парсить. Это конечно существенно упростит структуру циклов... Но вот проблема с помещением в память файла размером в 4 гб останется =(


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
17dufa
Дата 27.2.2010, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 2.3.2006

Репутация: 3
Всего: 5



Alix36, а зачем помещать в память весь файл?
PM MAIL   Вверх
Фантом
Дата 27.2.2010, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Alix36 @  27.2.2010,  16:03 Найти цитируемый пост)

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

Ясно. Тогда это другая задача, а не та, которую Вы описали (причем более сложная).

Дело в том, что генератор случайных чисел может (и даже в некотором роде обязан) повторяться на интервалах, существенно меньших периода псевдослучайной последовательности. Т.е. предполагаемым Вами способом можно получить лишь нижнюю оценку периода, для точной оценки нужно хранить весь сгенерированный объем данных.

На практике же для хороших генераторов период не ищется - потому что, во-первых, это сложно, во-вторых, редко кому нужно. Проверяют обычно статистические характеристики генератора.
PM   Вверх
xvr
Дата 27.2.2010, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



В книге 'Handbook of applied cryptography' (есть в Интеренете), есть тесты ГСЧ на криптографическую пригодность (вплоть до исходников программ)

PM MAIL   Вверх
Alix36
Дата 1.3.2010, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 6.11.2006

Репутация: нет
Всего: 3



криптографически данный ГСЧ непригоден(автор считает его не воспроизводимым или сложно-воспроизводимым), но все равно спасибо, посмотрю.
Цитата

Ясно. Тогда это другая задача, а не та, которую Вы описали (причем более сложная)

Чем? да, нужно найти не первое повторение, а когда повторения будут совпадать по порядку, если удасться найти индекс, то это +3 строки кода.

Цитата

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

ну тут возникает редкий случай определить период. Что значит "статические характеристики", анализ формулы(если он основан на мат.формуле)?
 


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
NewDima
Дата 1.3.2010, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



По-моему, здесь не велосипеды мастерить нужно, а базой данный воспользоваться, раз такие больший объемы однородной информации
PM ICQ   Вверх
Фантом
Дата 1.3.2010, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Alix36 @  1.3.2010,  07:49 Найти цитируемый пост)
Чем? да, нужно найти не первое повторение, а когда повторения будут совпадать по порядку, если удасться найти индекс, то это +3 строки кода.

Тем, что Вам придется хранить не просто одиночные уже встречавшиеся значения, а еще и их порядок. И если за период может встречаться, допустим, n повторов одного значения, то запланированные для хранения данных 4Гб придется умножить еще и на это n. Ну а поскольку n можно сделать сколь угодно большим, то и памяти может понадобиться бесконечно много. 

Представьте, например, что исследуемая функция возвращает целые числа от 0 до 9 (для простоты), которые являются последовательными цифрами числа "пи". Повтор будет не позже 11-го члена, а вот период - бесконечен.

Так что, как я уже писал, Вы хотите странного.  smile 

Цитата(Alix36 @  1.3.2010,  07:49 Найти цитируемый пост)
Что значит "статические характеристики", анализ формулы(если он основан на мат.формуле)?

Нет. Проверка свойств распределения чисел. Давать ссылки на Википедию (особенно русскоязычную) не совсем прилично, но в ней по этому поводу есть более-менее нормальный коротенький обзорчик - посмотрите тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.