LINUX.ORG.RU

статистическая задачка


0

0

не совсем девлепомент под линукс/юникс.
надо мне это не по студенчесткой бедной судьбе, а программулину я пишу тут одну (хитбот).

надо запраграмировать, чтобы случайно из 100% чисел выбиралось какоето число.
причем из первых 60% чисел, надо чтобы доля вероятности выбора составляла 60%, из 30% чисел доля вероятности выбора составляла 30%, а из оставшехся 10% чисел, доля вероятности составляла 10%
вооот... и как бы мне это все сделать а?

впринципе язык реализации для меня всеравно.. но есличто, то мне это дело надо на пхп написать будет...
или может быть ссылками кто поможет по программированию теорий вероятностей, чето гугл не помог (или запрос как следует не получилось составить). Или может быть знает кто готовый хитбот который на сайте по ссылкам кликает?, только скриптовый нужен.
(мне надо не для накручивания хитов или баннеропоказов - для теста другой моей проги)

anonymous

можно свести к обычному рандому , если увеличить количество каждой из цифр в соответствии с процентом вхождения :)

Deleted
()

> надо запраграмировать, чтобы случайно из 100% чисел выбиралось какоето число.
> причем из первых 60% чисел, надо чтобы доля вероятности выбора
> составляла 60%, из 30% чисел доля вероятности выбора составляла 30%,

это же равномерное распределение, в чем вопрос-то?

idle ★★★★★
()

Да этож действительно, нормальное распределение! Так что любой хороший рандомник подойдет. И больше никаки выкрутасов не надо.

Учите дети высшую математику!

Zert
()

Если тебе надо хитровыеб... закрученное распределение, то составь таблицу распределения вероятностей, и потом её юзай :)))) т.е. если тебе надо не линейное (т.е. нормальное) распределение, а генератор выдает линейное - равномерное, то делай или таблицу, или формулу, по которой будешь считать отображение результата random на твою плотность вероятности.

Понятно?

Нарисуй себе график твоего распределения, и раскинь мозгами, как тебе дешевле провести искажение аргумента для нужного результата.

Делаешь в своем случае например так. Гонишь число в диапазоне 1-100. если меньше 60-ти, то выбираешь новое random из первых 60%. Если 60-90, то случайно из 30%. Если 90-100, то случайное из 10% оставшихся.

Лучше ли использовать два разных генератора случайных чисел - не знаю, меня раздражает например, что в системном генераторе нельзя сделать разные "сессии" генераторов - тогда у тебя для сложных вычислений получится не равномерное распределение, а херня какая-то... :-/

P.S. и нифига оно не равномерное - это я в ответ предыдущим постам, а какое оно - х.з., хай математики придумывают название :))))

Такой метод тебе подходит? :))))

Spectr ★★★
()
Ответ на: комментарий от anonymous

Нормальное, не нормальное... Мало кто помнит, что нормальное - это связано с числом e, сразу вспоминаешь - нормальное, знач, равномерное, т.е. то, что тебе дает системная функция... А нормальное получить - или функцией, или таблицей искажения :))))

Spectr ★★★
()
Ответ на: комментарий от Zert

> Да этож действительно, нормальное распределение! Так что любой хороший рандомник подойдет. И больше никаки выкрутасов не надо.

Нифига. По хорошему - два разных рандомника, независимых, иначе херня выйдет... А так - это не одна случайная последовательность, а композиция из двух уровней :)))

Блин, как может впечатлить разговор с математиком - как-то думал RPG ваять, спросил математика - как кубики кидать??? если идет 2D5+4 плюс удача у тебя не в дугу, и с мечом хреново обращаешся - там уже rand не сильно поможет... :)

Spectr ★★★
()
Ответ на: комментарий от Spectr

спасибо, спектр, за такой развернутый ответ!
я так и предстовлял себе что без двух генераторов полюбому не обойтись.. но 2 генератора использовать тоже не очень хотел, т.к. кривовато.. будем думать дальше.
с 1им rand'омом и не представляю как можно сделать...

anonymous
()
Ответ на: комментарий от anonymous

другими словами:
всего есть чисел 10 - это 100% чисел.
от 1 до 6того числа, выбор этих чисел должен составлять 60%.
от 7 до 9 - 30% соответсвенно.
и 10 должно вскакивать только при случайности 10%

anonymous
()
Ответ на: комментарий от Spectr

> Делаешь в своем случае например так. Гонишь число в диапазоне 1-100. если меньше 60-ти, то выбираешь новое random из первых 60%. Если 60-90, то случайно из 30%. Если 90-100, то случайное из 10% оставшихся.

так наверно самое разумное.

anonymous
()
Ответ на: комментарий от Spectr

>Делаешь в своем случае например так. Гонишь число в диапазоне 1-100. если меньше 60-ти, то выбираешь новое random из первых 60%. Если 60-90, то случайно из 30%. Если 90-100, то случайное из 10% оставшихся.

Если уж начали разбирать на конкретном примере :)

Даны группы чисел A = {1, 2, ... , 60}, B = {61, 62, ... , 90}, C = {91, 92, ... , 100}. То, что вы предложили.

Вероятность выбора числа n равна произведению вероятностей выбора группы и выбора числа в этой группе. Видно же, что вероятность выпадания числа из A равна (60/100) * (1/60), из B: (30/100) * (1/30), из C: (10/100) * (1/10).

Ну чем не равномерное распределение? :) Зачем второй рандом, одного хватит.

anonymous
()
Ответ на: комментарий от anonymous

> Ну чем не равномерное распределение?

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

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.