![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 гб в память, придется их разбивать . но тут появляется куча гемороя с загрузкой-выгрузкой файлов, поиском в файлах и т.п. Вопрос, что лучше все таки использовать? массивы или файлы? -------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Очень странная по постановке задача. Вы не могли бы написать, зачем Вам это понадобилось? P.S. Достаточно хороших решений у нее, по-видимому, просто нет, но есть сильное подозрение, что ее можно и не решать. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а может разбить на несколько диапазонов, и сохранять только те функции, результат которых будет в указанном диапазоне,
и по очереди проверять каждый из диапазонов. Тогда будет сокращение используемой памяти, но придется прогонять все функции для каждого диапазона. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
Alix36, что за функция-то такая? в нее передаются параметры? может проще выявить зависимость и дальше уже думать
|
|||
|
||||
| Alix36 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: нет Всего: 3 |
функция - ПГСЧ на промежутке [-1,1]
её саму менять не могу (имеется только dll), соотв. исходника тоже нет. Так что зависимость неимея формулы вычислять не вариант. Параметров нет. Необходимо найти "предел мощности", т.е. на каком вызове за dt функция начнет "повторяться"(выдавать результат который уже был). 2mes немного не понял. Функция то одна. В принципе можно разбить на 2 операции. Сначала генерировать файл с результатами выполнения, а потом уже его парсить. Это конечно существенно упростит структуру циклов... Но вот проблема с помещением в память файла размером в 4 гб останется =( -------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: 3 Всего: 5 |
Alix36, а зачем помещать в память весь файл?
|
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Ясно. Тогда это другая задача, а не та, которую Вы описали (причем более сложная). Дело в том, что генератор случайных чисел может (и даже в некотором роде обязан) повторяться на интервалах, существенно меньших периода псевдослучайной последовательности. Т.е. предполагаемым Вами способом можно получить лишь нижнюю оценку периода, для точной оценки нужно хранить весь сгенерированный объем данных. На практике же для хороших генераторов период не ищется - потому что, во-первых, это сложно, во-вторых, редко кому нужно. Проверяют обычно статистические характеристики генератора. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
В книге 'Handbook of applied cryptography' (есть в Интеренете), есть тесты ГСЧ на криптографическую пригодность (вплоть до исходников программ)
|
|||
|
||||
| Alix36 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 478 Регистрация: 6.11.2006 Репутация: нет Всего: 3 |
криптографически данный ГСЧ непригоден(автор считает его не воспроизводимым или сложно-воспроизводимым), но все равно спасибо, посмотрю.
Чем? да, нужно найти не первое повторение, а когда повторения будут совпадать по порядку, если удасться найти индекс, то это +3 строки кода.
ну тут возникает редкий случай определить период. Что значит "статические характеристики", анализ формулы(если он основан на мат.формуле)? -------------------- Наши лица как дым, И никто не узнает как мы победим. (С)Пикник. |
||||
|
|||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
По-моему, здесь не велосипеды мастерить нужно, а базой данный воспользоваться, раз такие больший объемы однородной информации
|
|||
|
||||
| Фантом |
|
||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Тем, что Вам придется хранить не просто одиночные уже встречавшиеся значения, а еще и их порядок. И если за период может встречаться, допустим, n повторов одного значения, то запланированные для хранения данных 4Гб придется умножить еще и на это n. Ну а поскольку n можно сделать сколь угодно большим, то и памяти может понадобиться бесконечно много. Представьте, например, что исследуемая функция возвращает целые числа от 0 до 9 (для простоты), которые являются последовательными цифрами числа "пи". Повтор будет не позже 11-го члена, а вот период - бесконечен. Так что, как я уже писал, Вы хотите странного.
Нет. Проверка свойств распределения чисел. Давать ссылки на Википедию (особенно русскоязычную) не совсем прилично, но в ней по этому поводу есть более-менее нормальный коротенький обзорчик - посмотрите тут. |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |