
Oleg
10.09.2018
21:54:37
P(max(a, b) < x) = P( a < x && b < x) =
P(a < x) * P(b < x) = x^2

Андрей
10.09.2018
21:54:47
у нас 3 варианта - 2 слева, 2 справа и по одному там и там. по Гауссу хотел бы рассчитать вероятности этих событий и кинуть монетку

Oleg
10.09.2018
21:55:26
Отмасштабировав правильно такое распределение на целые числа легко выбрать сначала максимум, а потом второе число от нуля до первого
Теперь представим, что k - нечётное?

Google

Андрей
10.09.2018
21:55:54
а какая разница?

Oleg
10.09.2018
21:56:01
Тогда мат-ожидание середины равномерно

Андрей
10.09.2018
21:56:38
не вижу чем это поможет. нам не матожидание нужно а генерировать испытания каждый раз с неравномерным исходом

Oleg
10.09.2018
21:56:38
Выбираем середину, потом выбираем рекурсивно k/2 чисел справа, k/ 2 слева

Андрей
10.09.2018
21:56:50
и получаем равномерную сетку - ок )
ее я могу и проще через шаг получить )

Oleg
10.09.2018
21:57:08

Андрей
10.09.2018
21:57:24
нечетность к чем так выделяется?

Oleg
10.09.2018
21:57:26

Андрей
10.09.2018
21:57:41
кинуть монетку и выбрать - что выпадет

Oleg
10.09.2018
21:58:01
И делать специальный мэппинг с пропусками
Если k - очень большое

Google

Alexander
10.09.2018
21:58:35
ещё есть странный вариант, просто вызывать random shuffle на вершинах

Oleg
10.09.2018
21:59:00
К с правильным алгоритмом можно помнить только логарифм и никаких пропусков учитывать не нужно

Андрей
10.09.2018
21:59:14
при любом к не придется ничего запоминать - алгоритм волшебен, только Гаусса прикрутить
шаффл интересная идея...

Oleg
10.09.2018
22:00:08

Alexander
10.09.2018
22:00:23
не знаю, думаю пока что

Pineapple
10.09.2018
22:01:14
Придумал отличный рекурсивный алгоритм. Нам надо придумать набор N рёбер из K возможных. Они у нас как-то занумерованы и задача сводится к генерации битвектора дл ины K с N единицами
У нас равнораспределение, потому первый элемент 1 с вероятностью K/N.
1. Выбираем его случайно
2. Если он 1 задача сводится к (K-1,N-1), иначе (K,N-1)
Нужно сгенерировать N случайных чисел, где N —число рёбер

Андрей
10.09.2018
22:02:00
щас скопипасчу пока не уехало и почитаю вдумчиво…

Pineapple
10.09.2018
22:02:04
А алгоритм @IIvana я так и не понял

Oleg
10.09.2018
22:02:07
Как выбрать миллион гарантированно разных целых чисел в диапазоне от 0 до C(5000,2500), не запоминая ничего на каждом шаге

Alexander
10.09.2018
22:02:09
ну с этого начинается все

Pineapple
10.09.2018
22:02:09
:(

Евгений
10.09.2018
22:02:21
Увидел "если будет много офытопа -- отправлю в блах" и 150 непрочитанных сообщений

Alexander
10.09.2018
22:02:28
ну или запоминая минимум
тут почти спец олимпиадка!
я так понял идея такая - разбиваем отрезок на 2, выбираем сколько элементов попало в первую половину
рекурсивно продолжаем
тогда нам нужно помнить log(N*M/2) чисел (сколько точек в соотв отрезке)

Oleg
10.09.2018
22:04:42
А. Я неправильно понял алгоритм

Google

Alexander
10.09.2018
22:04:42
ну или побить на большее число отрезков, тогда вообще помнить 1 число придётся

Oleg
10.09.2018
22:04:49
Тогда да - ок

Alexander
10.09.2018
22:05:02
я так понял решение @IIvana
т.е. вопрос в том как эффективно выбирать это самое число только

Pineapple
10.09.2018
22:05:31

Oleg
10.09.2018
22:05:41

Alexander
10.09.2018
22:05:51
и держать битвектор
я вроде это сначала предлагал
правда по глупости предложил перебросить кубик если попали на выбранное
но это не обязательно

Pineapple
10.09.2018
22:06:41
Битвектор материализовывать необязательно.

Alexander
10.09.2018
22:07:04
ну список выбранных ответов помнить надо?

Oleg
10.09.2018
22:07:10

Alexander
10.09.2018
22:07:15
или фунцию преобразования
а как тогда?

Андрей
10.09.2018
22:07:37
у меня ничего помнить не надо! у меня патологическая рекурсивная сортировка сама все помнит на стеке

Alexander
10.09.2018
22:07:51
стек == помнить

Pineapple
10.09.2018
22:07:59
Можно сразу употреблять. Но есть граф сильно разряженный, то алгоритм будет неэкномичный. Он O(число возможных ребёр)

Alexander
10.09.2018
22:08:02
я правильно понял твое решение, кстати?

Google

Андрей
10.09.2018
22:08:23
посчитай глубину стека для числа ребер 1000000 - мизер ) да, решение понял правильно
вся соль - разбить число не пополам а отрезок пополам

Alexander
10.09.2018
22:08:41
а понял
все мой комментарий снят

Pineapple
10.09.2018
22:09:01

Alexander
10.09.2018
22:09:01
проходим по всем и выбираем его с вероятностью k/n

Pineapple
10.09.2018
22:09:13
k/n меняется с каждым шагом

Alexander
10.09.2018
22:09:14
потом меняем вероятность в зависимости от результата
угу

Oleg
10.09.2018
22:09:29
а как тогда?
Биномиальным распределением понимаешь, сколько элементов должно идти в левый подотрезок
Спускаешься рекурсивно то в него, потом во второй с оставшимися. Пока размер отрезка не станет сравнис с количеством точек в нём и можно будет опять запустить выбор C

Андрей
10.09.2018
22:09:31
а вот это я уже не понимаю (

Alexander
10.09.2018
22:09:48

Андрей
10.09.2018
22:10:03
не прямо выше а до этого -0 алгоритм Александра и Алексея

Alexander
10.09.2018
22:10:45
просто Алексея, я не решился предлагать этот алгоритм, хотя и думал о нём
смотри
берёшь первый элемент
какая вероятность того, что он в списке?

Андрей
10.09.2018
22:11:06
0

Alexander
10.09.2018
22:11:06
это конкретное ребро

Андрей
10.09.2018
22:11:16
в списке выбранных?

Google

Alexander
10.09.2018
22:11:44
какая вероятность, что ребро (1,2) у тебя выбрано если всего у тебя N вершин, и из них выбрано K?

Андрей
10.09.2018
22:12:00
к/n

Alexander
10.09.2018
22:12:03
вот
бросаешь кубик, и узнаешь входит ли оно

Андрей
10.09.2018
22:12:17
или нет? )

Alexander
10.09.2018
22:12:22
верно

Pineapple
10.09.2018
22:12:25
Спокой ночи

Alexander
10.09.2018
22:12:30
после этого у тебя 2 варианта

Oleg
10.09.2018
22:12:37

Alexander
10.09.2018
22:12:43
неа

Андрей
10.09.2018
22:12:51
Алексей - пасиб за биномиальное и Гаусса

Alexander
10.09.2018
22:13:22
у тебя 2 варианта:
1. выбрали, тогда решаешь задачу с (n-1) ребром и нужно выбрать (k-1)
2. не выбрали тогда n'=n-1, k'=k
и идешь по списку дальше

Oleg
10.09.2018
22:13:34

Alexander
10.09.2018
22:13:48
да, она изменяется после каждого выбора

Андрей
10.09.2018
22:13:57
но тогда я могу набросать кубик так, что к концу не наберу мое К

Oleg
10.09.2018
22:14:04

Alexander
10.09.2018
22:14:04
не можешь

Андрей
10.09.2018
22:14:07
или я туплю

Oleg
10.09.2018
22:14:20
Я сделал 1000 графов

Alexander
10.09.2018
22:14:33
если я правильно понимаю то или (k-1)/(n-1). или k/(n-1)

Oleg
10.09.2018
22:14:45
Как мне посчитать вероятность выбора первого ребра для 1001 графа?