powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор 500 000 строк
25 сообщений из 89, страница 1 из 4
Перебор 500 000 строк
    #38031239
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Есть задача генерации лотерейных билетов. Один билет 6 цифр. Билетов 500 000. Комбинация номеров должна быть уникальна, причем: 1 5 6 9 8 11 25 это равно 5 25 1 6 9 8 11, т.е. порядок не имеет значения. Если ехать простым for или через linq по массивам, получается очень долго, т.к. каждый раз надо проверять, есть ли совпадения в комбинациях или нет и если есть, комбинацию надо перегенерировать.
Исходя из этого вопрос, есть ли какой-то более быстрый способ проверки наличия набора значений в массиве данных?
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031269
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25 и 11 - это цифры?
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031286
dzone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяй не каждую цифру а хеш отсортированной строки, например "156981125".GetHashCode() в массиве хешей уже созданных билетов. думаю ускорит.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031288
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое, что в голову пришло: отсортировать, сформировать строку "1 5 6 9 8 11 25", взять от неё хэш и использовать в качестве ключа комбинации.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031289
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dzone, только разделитель между цифрами в строке нужен :)
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031305
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskini,
Вы не поняли задачу, лотерейные билеты - один билет имеет идентификатор из шесть цифр пример 000001, 0000002 и тд.
задача простая от 0 до 500 000 простой инкремент, забить пустые регистры нулями.
То что вы написали 1 5 6 9 8 11 25, вы будете удивлены но тут 9 цифр, они никак не укладываются в ваше задание.
Вы путаете число с цифрой, номер это также комбинация из цифр, уникальность номера тут можно развести холивар
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031309
FreeFire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

массив случайных цифр от 1 1 1 1 1 1 1 до 9 9 9 9 9 9 9
или просто цифр и потом их перемешать
не?
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031537
svh.serjo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Взаимоисключающие условия. Если "причем: 1 5 6 9 8 11 25 это равно 5 25 1 6 9 8 11", то будет и 1 2 3 4 5 6 равно 6 5 4 3 2 1,etc. Что уменьшает количество возможных комбинаций в разы. (0 0 0 0 0 1 = 0 0 0 0 1 0 = 0 0 0 1 0 0 = 0 0 1 0 0 0 = 0 1 0 0 0 0 = 1 0 0 0 0 0). Так что Вы определитесь - у Вас там 6 ЦИФР или 6 ЧИСЕЛ? И уже после этого задавайте вопрос, как Вам сгенерить случайный массив.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031592
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dzoneПроверяй не каждую цифру а хеш отсортированной строки, например "156981125".GetHashCode() в массиве хешей уже созданных билетов. думаю ускорит.
Да, возможно это ускорит, я тоже думал про хеши, попробую
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031593
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиizoldov-roskini,
Вы не поняли задачу, лотерейные билеты - один билет имеет идентификатор из шесть цифр пример 000001, 0000002 и тд.
задача простая от 0 до 500 000 простой инкремент, забить пустые регистры нулями.
То что вы написали 1 5 6 9 8 11 25, вы будете удивлены но тут 9 цифр, они никак не укладываются в ваше задание.
Вы путаете число с цифрой, номер это также комбинация из цифр, уникальность номера тут можно развести холивар

Я говорю не о номере билета, а о игровой комбинации, я в первом посте все верно написал
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031601
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniДобрый день. Есть задача генерации лотерейных билетов. Один билет 6 цифр. Билетов 500 000. Комбинация номеров должна быть уникальна, причем: 1 5 6 9 8 11 25 это равно 5 25 1 6 9 8 11, т.е. порядок не имеет значения. Если ехать простым for или через linq по массивам, получается очень долго, т.к. каждый раз надо проверять, есть ли совпадения в комбинациях или нет и если есть, комбинацию надо перегенерировать.
Исходя из этого вопрос, есть ли какой-то более быстрый способ проверки наличия набора значений в массиве данных?Отвечая на заданный вопрос - есть: использовать упорядоченные массивы.

Другое дело, что, ИМХО, практичнее сначала сгенерировать 500000 неповторяющихся чисел, каждое из которых потом превращать в набор номеров. Или сразу использовать процесс генерации, в принципе не допускающий повторов.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031619
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniДобрый день. Есть задача генерации лотерейных билетов. Один билет 6 цифр
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031628
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,
вы определитесь, что есть цифра, что есть число - это разные понятия.
вы блондинка?
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031631
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction, извиняюсь, это не вам, а ТС
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031643
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиAbstraction,
вы определитесь, что есть цифра, что есть число - это разные понятия. *вежливо*
Спасибо, я в общих чертах в курсе. Слезьте уже с белого носорога.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031662
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,
значит вы блондинка, если в общих чертах
а по теме что вы виртуально представляете
никакой тут рандоминизации и проверок не надо
просто простой инкримент
1,2,3,4,5,6
7,8,9,10,11,12
..........
.......... uint.max();
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031666
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,
я по моему извинился перед вами, что запостил ответ вместо автору вам.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031677
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиAbstraction,
значит вы блондинка, если в общих чертах
а по теме что вы виртуально представляете
никакой тут рандоминизации и проверок не надо
просто простой инкримент
1,2,3,4,5,6
7,8,9,10,11,12
..........
.......... uint.max();Подсказка: номера в лото и подобных играх обычно ограничены сверху - раз, комбинации должны быть случайными - два. Хотя ТС обо всём этом предоставляет догадываться отвечающим, да.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031693
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,
в том то и дело, что автор не указал ничего, и что у него цифры и число и номер, это одно и тоже.
ЕГЭ еще не то с людьми может сделать ))
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38031719
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniДобрый день. Есть задача генерации лотерейных билетов. Один билет 6 цифр. Билетов 500 000. Комбинация номеров должна быть уникальна, причем: 1 5 6 9 8 11 25 это равно 5 25 1 6 9 8 11, т.е. порядок не имеет значения. Если ехать простым for или через linq по массивам, получается очень долго, т.к. каждый раз надо проверять, есть ли совпадения в комбинациях или нет и если есть, комбинацию надо перегенерировать.
Исходя из этого вопрос, есть ли какой-то более быстрый способ проверки наличия набора значений в массиве данных?

Ты бы лучше ссылку на правила проведения лотереи дал, они должны быть доступны, чем пытаться своими словами излагать.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38032058
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbstractionГде-то в степиAbstraction,
значит вы блондинка, если в общих чертах
а по теме что вы виртуально представляете
никакой тут рандоминизации и проверок не надо
просто простой инкримент
1,2,3,4,5,6
7,8,9,10,11,12
..........
.......... uint.max();Подсказка: номера в лото и подобных играх обычно ограничены сверху - раз, комбинации должны быть случайными - два. Хотя ТС обо всём этом предоставляет догадываться отвечающим, да.
если число ограничить двумя порядками , и требовать что бы в массиве не повторялось число ( оно было бы уникальным для всего массива массивов) задача вообще не имеет решения ибо мы сможем получить только 99/6 массивов и все....
что имел ввиду автор, так и осталось загадкой....
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38032064
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу использования GetHashCode(), не годится:
Код: sql
1.
Если два строковых объекта равны, метод GetHashCode возвращает одинаковые значения.Однако не существует уникального значения хэш-кода для каждого уникального строкового значения.Различные строки могут возвращать одинаковый хэш-код.


Это из MSDN, выход я нашел, делаем строку вида 1 2 3 4 45 26 15 и заталкиваем в массив, а потом просто проверяем наличие строки в массиве, Hash тут в принципе не нужен
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38032094
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиAbstractionпропущено...
Подсказка: номера в лото и подобных играх обычно ограничены сверху - раз, комбинации должны быть случайными - два. Хотя ТС обо всём этом предоставляет догадываться отвечающим, да.
если число ограничить двумя порядками , и требовать что бы в массиве не повторялось число ( оно было бы уникальным для всего массива массивов) задача вообще не имеет решения ибо мы сможем получить только 99/6 массивов и все....
что имел ввиду автор, так и осталось загадкой....Что должны быть уникальные комбинации. Поскольку числа обычно от 1 до 90, то имеем 622614630 возможных вариантов. Также, полагаю, автор хочет, чтобы вероятности возникновения в серии каждого из возможных вариантов были с хорошей точностью равны, корреляция варианта с номером билета отсутствовала, корреляция вариантов на соседних билетах отсутствовала.
Будет не лень - вечером напишу алгоритм за линейное время.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38032112
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,
понял, если автор под цифрой имеет ввиду число а их в билете 6 чисел, то почему он везде в примерах оперирует
таким видом . "Комбинация номеров должна быть уникальна, причем: 1 5 6 9 8 11 25 это равно 5 25 1 6 9 8 11, т.е. порядок не имеет значения" тут же везде по семь чисел? и второе, имхо было бы правильно делать выравнивание нулем, ну а так параллели и словарь.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38032130
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniПо поводу использования GetHashCode(), не годится:
Код: sql
1.
Если два строковых объекта равны, метод GetHashCode возвращает одинаковые значения.Однако не существует уникального значения хэш-кода для каждого уникального строкового значения.Различные строки могут возвращать одинаковый хэш-код.


Это из MSDN, выход я нашел, делаем строку вида 1 2 3 4 45 26 15 и заталкиваем в массив, а потом просто проверяем наличие строки в массиве, Hash тут в принципе не нужен

Чёт вы не то написали.
Вот если числа отсортировать по возрастанию(1 2 3 4 15 26 45) , то тогда потом действительно можно просто сравнивать строки.

А какая у вас лотерейная система? Что это 6 из 49 + доп.число + суперчисло или 6 из 45 просто или ещё какая?
...
Рейтинг: 0 / 0
25 сообщений из 89, страница 1 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор 500 000 строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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