powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Выборка из миллиарда
13 сообщений из 88, страница 4 из 4
Выборка из миллиарда
    #38642713
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TС учетом большого числа дырок, лично мне кажется оптимальный алгоритм - сначала поиск интервала с дыркой от единицы вверх, затем поиск непрерывного вниз двоичным поиском.
т.е. берем 1 - сканируем весь поток, затем 2,4,8 и т.д.
как получили дырку - продолжаем между предыдущим и текущим, т.е. дальше чистый двоичный поиск.
вероятность что нет первого составляет 10^3 к 1, нет второго 10^6 к 1 и т.д. (если теорию вероятностей правильно помню), т.е. скорее всего за один проход все найдется. В худшем случае 40 сканов для непрерывной последовательности в миллион. Т.е. тут сложность O(log2(n) + log2(n)) но по сравнению с чистым двоичным поиском высока вероятность решить в один проход. Двоичным от миллиона поиск значения 1 потребует 20 проходов.

Также получается универсально, т.к. тут нет ограничения сверху, т.е. без разницы сколько значений хоть миллион, хоть олимпиард :)
а что мешает объединить два этих метода ? пусть будет бинарный поиск с нижним расширением :-)
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38642717
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)а что мешает объединить два этих метода ? пусть будет бинарный поиск с нижним расширением :-)
распиши подробнее
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38642718
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
ну в бинарном поиске ты всё равно весь файл читаешь
что мешает вести
L,R бинарного поиска
и попутно считать число значений меньше L+степени двойки

чтение из файла ведь всё равно затратнее
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38642736
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Dima T,
ну в бинарном поиске ты всё равно весь файл читаешь
что мешает вести
L,R бинарного поиска
и попутно считать число значений меньше L+степени двойки

чтение из файла ведь всё равно затратнее
можно параллельно считать обоими способами, потом переходить к двоичному поиску, только польза будет при большой искомой непрерывной последовательности 1...N, а вероятность изначальной генерации такой последовательности 1 из 10^(N*3), т.е. практически невозможно, поэтому можно не усложнять.
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38642791
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

задача олимпиадная, проверяют такие вещи самыми неудобными наборами
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38643558
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задумался как сделать Shuffle последовательности без временных массивов.
По сути речь идёт об ограниченном ГПСЧ "без повторений" только для решения
данной задачи.

Для последовательности кратной 2^N вроде-бы всё просто. А вот для произвольного size = 1 000 000 000
пока не знаю как такой Shuffle сделать.
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38643625
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДля последовательности кратной 2^N вроде-бы всё просто. А вот для произвольного size = 1 000 000 000

тогда делаешь последовательность 2^30 и все что больше 1 000 000 000 пропускаешь

Для 2^N ты как хотел сделать просто?
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38643650
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, перестановкой битов в целом числе. Я до этого так делал псевдо-ГПСЧ
с уникальностью.
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38643656
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для миллиарда думаю можно взять 30 битиков и использовать тот-же самый алгоритм
но проверять что результат попадает в диапазаон [0..999 999 999]
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38644667
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получился у меня ГПСЧ. Вобщем сходу энтропия плохая. Глазом видно что все чётные - меньше.

А ну его в болото.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
1073741824
536870912
1610612736
268435456
1342177280
805306368
1879048192
134217728
1207959552
671088640
1744830464
402653184
1476395008
939524096
2013265920
67108864
1140850688
603979776
1677721600
335544320
1409286144
872415232
1946157056
201326592
1275068416
738197504

Вобщем лучшее решение у kealon(Ruslan).

Фух ... надоёло всё.
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38644758
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНе получился у меня ГПСЧ.
Ну и отлично, а то я весь мозг сломал как можно последовательность из неповторяющихся чисел сгенерить :)
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38644952
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно легко. Только я себе ограничение поставил. Не использовать массивы и сортировки.
Надо-б еще сдвиговый регистр с хорём попробовать но уже лень и у него тоже энтропия плохая.
...
Рейтинг: 0 / 0
Выборка из миллиарда
    #38645095
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМожно легко. Только я себе ограничение поставил. Не использовать массивы и сортировки.
Надо-б еще сдвиговый регистр с хорём попробовать но уже лень и у него тоже энтропия плохая.

А мне кажется, как не крути, псевдослучайная генерация без повторов уже не является ни случайной, ни даже псевдослучайной.

Всё очень просто.... в таком алгоритме появляется чёткая закономерность. И скажем например, сгенерировав 999'999 значений, я точно буду знать следующее генерируемое значение (хотя конечно всего одно значение можно и не брать в счёт). При этом мы не можем взять какой либо генератор энтропии с хорошими параметрами, так как тогда мы автоматически исключаем пункт "без повторений" пока просто не начнём явно определять (с помощью массива), что это значение уже показывали и надо выбрать случайное среди оставшихся.

Потому без массивов, думаю, задача не решаема.
...
Рейтинг: 0 / 0
13 сообщений из 88, страница 4 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Выборка из миллиарда
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]