powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор 500 000 строк
14 сообщений из 89, страница 4 из 4
Перебор 500 000 строк
    #38034450
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Syrexizoldov-roskiniКто-бы еще сказал как посчитать максимально кол-во комбинаций наборов из 6 чисел от 1 до 30, порядок числа в наборе не имеет значения, т.е. 1 5 26 3 16 4 равно 5 3 16 26 4 1.

Может проще сгенерить все возможные варианты, а после этого случайным образом "выдергивать" их?

PS - по крайней мере так генерировали в Русском Лото.
Генерилось у них минут 10-15А смысл? Выше приведён алгоритм, который получает комбинацию по числу, где число - от 0 до (количество вариантов-1). То есть, "все возможные варианты" - просто множество чисел. Вопрос в том, как нормально "выдернуть" без повторов, с равномерным распределением.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38034501
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erАлексей КВроде как при компиляции производится инлайнинг методов.
не знаю что там именно происходит, но я вижу что происходит замедление исполнения команд.Не замечал.
beg-in-erКак раз в рекурсии использовать return самое оно. цель как раз отказаться от рекурсии по причине ускорения ( до 10 раз , а то и более)Опять же нужен пример. Верить наслово никому нельзя. :-)
beg-in-erАлексей К Неправильное и необдуманное использование goto....
так это чьи проблемы , оператора goto , или хомосапиенса его использующего???Вроде как все "обдуманные" стратегии использования goto завёрнуты в конструкции структурного программирования: if, while, throw, return и т. п.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38034510
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erАлексей КВроде как при компиляции производится инлайнинг методов.
не знаю что там именно происходит, но я вижу что происходит замедление исполнения команд.
Элементарно...
При вызове процедуры/функции добавляется, самое меньшее, передача параметров и возврат результатов - и это не считая выделения памяти под локальные переменные и их инициализацию. Переход по метке всего этого не требует. Соответственно, и работает быстрее...
beg-in-erКак раз в рекурсии использовать return самое оно. цель как раз отказаться от рекурсии по причине ускорения ( до 10 раз , а то и более)
Конкретная цель -> конкретное решение -> конкретный результат...
И если решениеи использовать (или не использовать) какое-то средства положительно сказывается на этой цепочке - решение правильное... И пусть весь мир подождет...
beg-in-erАлексей К Неправильное и необдуманное использование goto....
так это чьи проблемы , оператора goto , или хомосапиенса его использующего???+100500 :)
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38034552
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кbeg-in-erтак это чьи проблемы , оператора goto , или хомосапиенса его использующего???Вроде как все "обдуманные" стратегии использования goto завёрнуты в конструкции структурного программирования: if, while, throw, return и т. п.
Десяток-другой вложенных друг в друга "завернутых" if/else со сложными условиями в каждом операторе - вынос мозга гарантирован...
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38034555
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erАлексей КВроде как при компиляции производится инлайнинг методов.
не знаю что там именно происходит, но я вижу что происходит замедление исполнения команд. Тут и тут .
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38034576
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvАлексей Кпропущено...
Вроде как все "обдуманные" стратегии использования goto завёрнуты в конструкции структурного программирования: if, while, throw, return и т. п.
Десяток-другой вложенных друг в друга "завернутых" if/else со сложными условиями в каждом операторе - вынос мозга гарантирован...Ещё раз - не нужно пихать всё в один метод. Желание сделать goto - одна из причин для выделения метода(ов).
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38034617
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кsphinx_mvпропущено...

Десяток-другой вложенных друг в друга "завернутых" if/else со сложными условиями в каждом операторе - вынос мозга гарантирован...Ещё раз - не нужно пихать всё в один метод. Желание сделать goto - одна из причин для выделения метода(ов).Ага...
А желание выделить класс - причина еще раз хорошо подумать...
"Иметь причину" что-либо сделать, совершенно не означает "иметь основание" делать именно это. :)

Исхожу из того, что в "homo sapiens" ключевой частью служит все же "разумный"...
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38034653
Syrex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbstractionSyrexпропущено...


Может проще сгенерить все возможные варианты, а после этого случайным образом "выдергивать" их?

PS - по крайней мере так генерировали в Русском Лото.
Генерилось у них минут 10-15А смысл? Выше приведён алгоритм, который получает комбинацию по числу, где число - от 0 до (количество вариантов-1). То есть, "все возможные варианты" - просто множество чисел. Вопрос в том, как нормально "выдернуть" без повторов, с равномерным распределением.
После генерации создать "массив_а" на 500 000 элементов (цифр от 0 до 499 999) и далее по этим номерам вытаскивать строки из массива "всех возможных вариантов", номера которых соответствуют числам из "массив_а"
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38035022
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniГоспода, какая разница, зачем и почему, надо быстро сгенерить 500 000 комбинаций из 6 чисел каждая, причем чтобы соблюдалась уникальность вне зависимости от порядка чисел внутри одной комбинации.

Как это какая разница?
Хотелось бы знать что бы прикинуть стоимость этой затеи.
Если ЭТО немецкое LOTTO 6 из 49, на что это очень похоже, то тогда 500 000 комбинаций это будет 41667 билетов по 12 полей в каждом и ценой в 9,25 Евро, ИТОГО = 385419,75 €
Ну а дальше не сложно посмотреть какие у вас шансы выиграть и сколько вы можете выиграть.
Хотите умереть молодым и красивым - найдите какого-нить бандита уважаемого человека который даст вам денег на эту затею.

Вот затем и хотелось бы знать. Давайте колитесь уже. А то может и правда надо уже бежать покупать 41667 билетов что бы разбогатеть, а мужики то не знают. ;)
Я жду.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38107692
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал генерацию комбинаций из 6 цифр от 1 до 30, расположение цифр в комбинации не имеет значения, т.е. 1 2 3 4 5 6 = 2 1 3 5 6 5, но почему-то при 475020 идет резкое падение скорости, падение практически до нуля, не могу понять в чем причина, комбинаций по комбинаторике должно получаться чуть больше 593 000, где косяк?
Код: c#
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.
26.
                            for (int y = 1; y <= 590000; y++) //12
                            {
                                RESTART0:
                                 List<int> ARR = new List<int>();
                                 for (int N = 0; N < 6; N++)
                                 {
                                     int T = rnd.Next(1, 30);
                                     while (ARR.Contains(T) || T == 0)
                                     {
                                         T = rnd.Next(1, 30);
                                     }
                                     ARR.Add(T);
                                     
                                 }
                                ARR.Sort();
                                
                                if (ARR.Contains(0))
                                    goto RESTART0;

                                  Combination cc = new Combination() { c1 = ARR[0], c2 = ARR[1], c3 = ARR[2], c4 = ARR[3], c5 = ARR[4], c6 = ARR[5] };
                                  string str = CombinationToString(cc);
                                  if (!hashes.Add(str))
                                  {
                                      goto RESTART0;
                                  }
                            }
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38107713
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл написать что Hashes - это HashSet<string>
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38107718
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все нашел косяк, Random.Next(1,30) - максимальное число которое он возвращает = 29 , чтобы было 30 надо указывать 31 - в документации написано что это верхний исключенный предел
Е мае :)
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38107758
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskini,

о, я что то узнаю
но вот этот фрагмент в предложенном варианте безсмысленен
Код: c#
1.
2.
if (ARR.Contains(0))
         goto RESTART0;


нулей то нет в последовательности ))
и отсутствует проверка на повторения. ну это дело ваше.
...
Рейтинг: 0 / 0
Перебор 500 000 строк
    #38107927
noob123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тему не осилил. так как взорвался мозг.
но если я правильно понимаю то задача
получить комбинацию k - чисел в диапазоне от 1 до n без учета порядка.
- это сочетания. .
теперь нам остается посчитать кол-во. потом в диапазоне 1..cnt генерить номер. (тут его можно проверять на уникальность, или алгоритм чтобы сразу не давал повторений).
далее по номеру строить сочетание. и все. чего там 4 страницы обсуждать, или я не прав?
...
Рейтинг: 0 / 0
14 сообщений из 89, страница 4 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор 500 000 строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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