Size: a a a

2020 June 26

OV

O V in pro.algorithms
Ладно, спасибо всем за ваше мнение^^
источник

A

Andrey in pro.algorithms
John Meow
Вполне читаемо имхо
Ага, можно было убрать == 0 и поменять местами выражения между :
источник

JM

John Meow in pro.algorithms
Andrey
Ага, можно было убрать == 0 и поменять местами выражения между :
Будет нечитаемо
источник

A

Andrey in pro.algorithms
Ну дело вкуса
источник

A

Andrey in pro.algorithms
А вообще я как раз про то, что == 0 для читаемости оставили
источник

/dev/urandon ¯\_(ツ)_... in pro.algorithms
O V
Настолько плохо?
Я б уволил сразу же
источник
2020 June 27

DU

Daniil Udimov in pro.algorithms
Andrey (@AndrewB330)
я так понимаю там будет что-то типа
int cnt(int x) {return x*(x+1)/2;}
return cnt(num/3)*3 + cnt(num/5)*5 - cnt(num/15)*15 ?

Поправьте
Похоже на то.
источник

JM

John Meow in pro.algorithms
Есть множества A_1, A_2, ..., A_k, нужно сгенерировать случайный список длины n из их элементов, причём из каждого множества в списке должен быть хотя бы один элементов. Как такое сделать эффективно? Пока в голову пришло сгенерировать первые k символов, i-ты символ из A_i, потом сгенерировать остальную часть из объединения множеств и перемешать список. Но это неэффективно
источник

AI

Anatoly Ignatiev in pro.algorithms
John Meow
Есть множества A_1, A_2, ..., A_k, нужно сгенерировать случайный список длины n из их элементов, причём из каждого множества в списке должен быть хотя бы один элементов. Как такое сделать эффективно? Пока в голову пришло сгенерировать первые k символов, i-ты символ из A_i, потом сгенерировать остальную часть из объединения множеств и перемешать список. Но это неэффективно
Почему просто не взять i элемент рандомно из i(modk) - го множества? Или там нужно какой-то нормальный рандом обеспечить?
источник

AI

Anatoly Ignatiev in pro.algorithms
Кстати то, что вы предложили же эффективно. Перемешивание за линию работает. std::shuffle, если на плюсах
источник

DU

Daniil Udimov in pro.algorithms
John Meow
Есть множества A_1, A_2, ..., A_k, нужно сгенерировать случайный список длины n из их элементов, причём из каждого множества в списке должен быть хотя бы один элементов. Как такое сделать эффективно? Пока в голову пришло сгенерировать первые k символов, i-ты символ из A_i, потом сгенерировать остальную часть из объединения множеств и перемешать список. Но это неэффективно
А множества могут пересекаться? А если x  \in A_i, x \in A_j, можно ли x взять два раза?
источник

JM

John Meow in pro.algorithms
Daniil Udimov
А множества могут пересекаться? А если x  \in A_i, x \in A_j, можно ли x взять два раза?
Не, не перескаеются
источник

JM

John Meow in pro.algorithms
Но один и тот же элемент можно использовать
источник

A

Aragaer in pro.algorithms
можно так:
k чисел "сколько брать из i-го множества", начинаются с единицы, затем n-k рандомных добавлений
затем выбираем случайное из этих чисел (с весами равными числам) и это номер множества, откуда взять. Берем случайное оттуда, число уменьшаем. Повторять, пока все числа не станут нулями
источник

CD

Constantine Drozdov in pro.algorithms
John Meow
Есть множества A_1, A_2, ..., A_k, нужно сгенерировать случайный список длины n из их элементов, причём из каждого множества в списке должен быть хотя бы один элементов. Как такое сделать эффективно? Пока в голову пришло сгенерировать первые k символов, i-ты символ из A_i, потом сгенерировать остальную часть из объединения множеств и перемешать список. Но это неэффективно
какая модель?
источник

JM

John Meow in pro.algorithms
Aragaer
можно так:
k чисел "сколько брать из i-го множества", начинаются с единицы, затем n-k рандомных добавлений
затем выбираем случайное из этих чисел (с весами равными числам) и это номер множества, откуда взять. Берем случайное оттуда, число уменьшаем. Повторять, пока все числа не станут нулями
М, хорошая идея
источник

CD

Constantine Drozdov in pro.algorithms
John Meow
Есть множества A_1, A_2, ..., A_k, нужно сгенерировать случайный список длины n из их элементов, причём из каждого множества в списке должен быть хотя бы один элементов. Как такое сделать эффективно? Пока в голову пришло сгенерировать первые k символов, i-ты символ из A_i, потом сгенерировать остальную часть из объединения множеств и перемешать список. Но это неэффективно
На i-ом шагу взять случайный элемент множества i % k - это решение?
источник

DU

Daniil Udimov in pro.algorithms
John Meow
Есть множества A_1, A_2, ..., A_k, нужно сгенерировать случайный список длины n из их элементов, причём из каждого множества в списке должен быть хотя бы один элементов. Как такое сделать эффективно? Пока в голову пришло сгенерировать первые k символов, i-ты символ из A_i, потом сгенерировать остальную часть из объединения множеств и перемешать список. Но это неэффективно
А что мы считаем случайным? Равномерно над всеми списками, удовлетворяющими условию?
источник

JM

John Meow in pro.algorithms
Daniil Udimov
А что мы считаем случайным? Равномерно над всеми списками, удовлетворяющими условию?
Угу
источник

DU

Daniil Udimov in pro.algorithms
Constantine Drozdov
На i-ом шагу взять случайный элемент множества i % k - это решение?
Если n=k+1, то из первого множества всегда будет на один элемент больше. Это не позволяет получить любой такой список.
источник