Бросаем кубик пока сумма очков не станет больше 6. Случайное число равно последнему выпавшему значению набранной суммы. Найти функцию распределения этой случайной величины
( Read more... )
Можно вручную и программа как "контрольный". Хотелось бы формулу получить для различных значений суммы 6,7,8... И какие то предельные варианты.
Для суммы равной 6, если отталкиваться от того что максимально возможное число бросков 7 - то полная система вариантов 6^7 = 279 936 - из них посчитать все x(k), где x(1)+x(2)+...+x(k-1)+x(k)>6 и x(1)+x(2)+...+x(k-1)<6 и k брать 2...7 Семь циклов в принципе не долго посчитаются - но может можно как-то по другому. Монте Карло я посмотрел. Из миллиона вариантов только около 30 закончились серией длины 7, самый большой вес у серии длины 2.
формула получилась хорошая - все причесалось. Сравнение с Монте Карло очень даже радует. Вопрос как это все трансформируется для случая - когда сумма требуется скажем больше 12. Там уже получается более равномерное распределение случайной величины.
Я бы стал программировать не так, а использовал бы рекурсию. Пусть функция f(n) возвращает функцию распределения - вектор из 6 чисел, где n- число, которое нужно превысить.
Тогда f(0)={1/6,1/6,1/6,1/6,1/6,1/6} При n>=6 f(n)=sum(f(n-k))/6, где 1<=k<=6 При 1<=n<6 f(n)={0,...,0,1/6,...1/6}+sum(f(n-k))/6, где 1<=k<=n, а в векторе первого слагаемого n нулей и 6-n раз 1/6.
Для n=6 эту программу можно проделать и вручную: выписать f(0), затем f(1) и т.д., я думаю, это займет даже не очень много времени. По поводу формулы надо подумать.
Comments 7
Reply
Для суммы равной 6, если отталкиваться от того что максимально возможное число бросков 7 - то полная система вариантов 6^7 = 279 936 - из них посчитать все x(k), где
x(1)+x(2)+...+x(k-1)+x(k)>6 и
x(1)+x(2)+...+x(k-1)<6 и k брать 2...7
Семь циклов в принципе не долго посчитаются - но может можно как-то по другому. Монте Карло я посмотрел. Из миллиона вариантов только около 30 закончились серией длины 7, самый большой вес у серии длины 2.
Reply
формула получилась хорошая - все причесалось. Сравнение с Монте Карло очень даже радует. Вопрос как это все трансформируется для случая - когда сумма требуется скажем больше 12. Там уже получается более равномерное распределение случайной величины.
Reply
Пусть функция f(n) возвращает функцию распределения - вектор из 6 чисел, где n- число, которое нужно превысить.
Тогда f(0)={1/6,1/6,1/6,1/6,1/6,1/6}
При n>=6 f(n)=sum(f(n-k))/6, где 1<=k<=6
При 1<=n<6 f(n)={0,...,0,1/6,...1/6}+sum(f(n-k))/6, где 1<=k<=n, а в векторе первого слагаемого n нулей и 6-n раз 1/6.
Для n=6 эту программу можно проделать и вручную: выписать f(0), затем f(1) и т.д., я думаю, это займет даже не очень много времени.
По поводу формулы надо подумать.
Reply
Leave a comment