Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
12.02.2008 11:32

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Знатокам теории вероятности, help!

Нужен эмулятор следующей ситуации:

В корзине лежит Y шаров, X из которых белого цвета.
Игрок наугад вытаскивает N шаров.
Требуется определить сколько белых шаров игрок вытащил.

Что-то я уперся в стенку sad никак не найду подходящую формулу расчета sad
может быть кто-нибудь сталкивался с подобной задачей? wink

Неактивен

0    0    #2
12.02.2008 11:49

fireton
некто с бородой (+354, -92)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1103
Вебсайт

Тон

Re: Знатокам теории вероятности, help!

ASBer написал:

В корзине лежит Y шаров, X из которых белого цвета.
Игрок наугад вытаскивает N шаров.
Требуется определить сколько белых шаров игрок вытащил.

Хм. Это не к теории вероятностей. Это простые дроби. smile
Соотношение в среднем не меняется.

M - число вытащенных белых шаров

X/Y = M/N, следовательно, M = N * X/Y

Домашнее задание делаешь? wink

Неактивен

0    0    #3
12.02.2008 12:04

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 795
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Знатокам теории вероятности, help!

Прошу перенести тему во флейм.

Неактивен

0    0    #4
12.02.2008 12:17

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам теории вероятности, help!

2 fireton: дробями решается только в случае равномерного распределения камней.
2 Korwin: мне нужна техническая реализация. желательно на с, но и basic тоже устроит.

Неактивен

0    0    #5
12.02.2008 12:44

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам теории вероятности, help!

пример: в корзине 10 камней, из них 3 белых.

как примерно должно быть:
1 попытка 3 камня - вытащено 0 белых, осталось 7 камней, из них 3 белых. //не повезло
2 попытка 1 камень - вытащен 1 белый, осталось 6 камней, из них 2 белых. //повезло
3 попытка 3 камня - вытащено 2 белый, осталось 3 камней, из них 0 белых. //повезло

при повторении каждый раз должна быть другая последовательность вытащенных камней.
для одного камня вероятность определяется простым соотношением белых камней к камням в корзине.
можно конечно сделать цикл от 1 до N и таскать камни по одному, но некрасиво...

Неактивен

0    0    #6
12.02.2008 12:49

fireton
некто с бородой (+354, -92)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1103
Вебсайт

Тон

Re: Знатокам теории вероятности, help!

дробями решается только в случае равномерного распределения камней.

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

Неактивен

0    0    #7
12.02.2008 12:57

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 795
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Знатокам теории вероятности, help!

ASBer написал:

...
2 Korwin: мне нужна техническая реализация. желательно на с, но и basic тоже устроит.

Соглашусь, если это имеет отношение к ИФ. В противном случае - злостный флейм.

Неактивен

0    0    #8
12.02.2008 13:22

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам теории вероятности, help!

2 Korwin: к ИФ отношение непосредственное - решение нужно для реализации рандома на моей ИФ платформе.

Неактивен

0    0    #9
12.02.2008 17:33

tadsloser
Участник
Зарегистрирован: 27.12.2007
Сообщений: 16

Re: Знатокам теории вероятности, help!

ASBer :
при повторении каждый раз должна быть другая последовательность вытащенных камней.
для одного камня вероятность определяется простым соотношением белых камней к камням в корзине.
можно конечно сделать цикл от 1 до N и таскать камни по одному, но некрасиво...

Я бы сделал так:

Код:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int takeWhiteCount( int takeTotal, int m, int n )
{
    int res = 0;

    int i;
    for ( i = 0; i < takeTotal; i++ ) {
        if ( (rand() % n) < m ) {
            res++;
            m--;
        }
        n--;
    }

    return res;
} 

int main()
{
    int takeTotal, m = 5, n = 10;

    printf("Сколько шаров вы хотите взять: ");
    scanf("%d", &takeTotal);

    srand( (unsigned)time(NULL) );
    printf("Вытащено белых шаров: %d\n", takeWhiteCount(takeTotal, m, n));

    return 0;    
}

Неактивен

0    0    #10
12.02.2008 19:20

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам теории вероятности, help!

2 tadsloser: спасибо за содействие smile
Взял Ваше решение в качестве временного чернового варианта.
Только ограничил takeTotal<=100, т.к. при takeTotal=1000000 даже современные компы зависают на недопустимо длительное время.
И всеже очень надеюсь что существуют решения без использования циклов.

Отредактировано ASBer (12.02.2008 19:21)

Неактивен

0    0    #11
12.02.2008 19:58

fireton
некто с бородой (+354, -92)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1103
Вебсайт

Тон

Re: Знатокам теории вероятности, help!

Так чем тебе дроби не угодили-то?
Нормальное распределение - самое лучше... smile

Неактивен

0    0    #12
12.02.2008 20:06

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам теории вероятности, help!

Дроби неслучайны.
Мне же по сути нужен генератор случайных чисел с 3мя параметрами и вышеописанным принципом действия smile

Код tadsloser-а абсолютно точно решает поставленную задачу, но к сожалению неоптимален.

Отредактировано ASBer (12.02.2008 20:10)

Неактивен

0    0    #13
12.02.2008 22:01

tadsloser
Участник
Зарегистрирован: 27.12.2007
Сообщений: 16

Re: Знатокам теории вероятности, help!

ASBer написал:

Только ограничил takeTotal<=100, т.к. при takeTotal=1000000 даже современные компы зависают на недопустимо длительное время.
И всеже очень надеюсь что существуют решения без использования циклов.

Не знаю даже, у меня при takeTotal = 10^7 (m=10^7 и n=2*10^7) за секунду посчитал (реультат = 5011437).
Только, если тебе нужны такие порядки, то в takeWhiteCount() функцию rand() нужно заменить на следующую:

Код:

int bigrand()
{
     return RAND_MAX*rand() + rand();
}

А поповоду "формульного" решения не знаю, я в математике, в том числе в ТВ,  не силен. Можно спросить на мат. форумах (в случае ответа не забудь отписаться smile

З.Ы.
В каком контексте возникли эти замечательные монохромные шары? Возможно, ты решаешь немного не ту задачу.

З.З.Ы
Очень не советую браться за написание своей платформы.

Отредактировано tadsloser (19.03.2008 00:45)

Неактивен

0    0    #14
12.02.2008 22:40

fireton
некто с бородой (+354, -92)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1103
Вебсайт

Тон

Re: Знатокам теории вероятности, help!

Я, честно говоря, никак не улавливаю, чем тебе не нравится классическое

Код:

m = rand()*N;

Зачем гонять этот жуткий цикл.

Неактивен

0    0    #15
13.02.2008 00:13

tadsloser
Участник
Зарегистрирован: 27.12.2007
Сообщений: 16

Re: Знатокам теории вероятности, help!

Я, чет тоже не улавливаю, у тебя результат не зависит от первоначальной комбинации шаров?

Неактивен

0    0    #16
13.02.2008 09:47

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам теории вероятности, help!

tadsloser написал:

Не знаю даже, у меня при takeTotal = 10^7 (m=10^7 и n=2*10^7) за секунду посчитал (реультат = 5011437).
Только, если тебе нужны такие порядки...

Ну вообщето не нужны smile это я из-за любви к чистому искусству. smile Для практических целей takeTotal=100 более чем достаточно.

tadsloser написал:

А поповоду "формульного" решения не знаю, я в математике, в том числе в ТВ,  не силен. Можно спросить на мат. форумах (в случае ответа не забудь отписаться smile

Если в этом топике "формульного" решение никто не предложит, оставлю до лучших времен как есть smile Ну не так уж я и люблю это самое искусство...

tadsloser написал:

З.Ы.
В каком контексте возникли эти замечательные монохромные шары? Возможно, ты решаешь немного не ту задачу.

Задача про корзину с монохромными шарами родилась как наиболее наглядно описывающая требующийся алгоритм.
На самом деле мне просто необходим удобный механизм управления шансами.
Вот пара примеров применения:
1. Случайные взаимосвязанные события.
Допустим в какой-то момент времени могут случайно произойти события А, Б, С.
Заряжаем корзину шарами и начинаем последовательно проверять шансы для каждого события.
Свершившееся событие снижает шанc для последующих событий, не свершившееся событие наоборот этот шанс увеличивает. При этом все пересчеты шансов происходят автоматически.
2. Расчет повреждения от удара (или размер полученной награды..).
В зависимости от различных параметров накидываем в корзину белые и черные шары.
Тянем N шаров, получаем размер повреждения (или награды).

Отредактировано ASBer (13.02.2008 10:19)

Неактивен

0    0    #17
13.02.2008 13:46

Gremour
Участник (+1)
Откуда: Беларусь
Зарегистрирован: 09.11.2004
Сообщений: 234

Re: Знатокам теории вероятности, help!

Вероятности в ИФ -- калёным железом. %)

Неактивен

0    0    #18
17.03.2008 20:45

Dimouse
Участник (+1)
Откуда: Moscow
Зарегистрирован: 09.12.2007
Сообщений: 63
Вебсайт

Oldskool still rule!

Re: Знатокам теории вероятности, help!

Если N<<X+Y, то тут биномиальное распределение. В остальных случаях нужно делать "в лоб", как было написано в предыдущих постах.

Неактивен

0    0    #19
18.03.2008 09:02

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам теории вероятности, help!

Dimouse написал:

Если N<<X+Y, то тут биномиальное распределение.

Прошу простить за темность, но хотелось бы формулу вычисления бинома, или алгоритм в идеальном случае.

Неактивен

0    0    #20
18.03.2008 22:18

Dimouse
Участник (+1)
Откуда: Moscow
Зарегистрирован: 09.12.2007
Сообщений: 63
Вебсайт

Oldskool still rule!

Re: Знатокам теории вероятности, help!

Функция плотности вероятности p(k)=n!/(n-k)!/k! p^k q^(n-k)
где p=X/(X+Y) - вероятность вытащить белый шар, q=1-p. Это действует в случае независимых событий только, т.е. число белых шаров мало уменьшается в ходе опыта.
Чтобы узнать сколько белых шаров вытащено можно действовать по Монте-Карло - написать функцию распределения F(k) (интеграл p(k)) и разыгрывая случайно число от 0 до 1 считать k=f(rand), где f - обратная функция к F.
В случае дискретного распределения все это по-моему страшный гемморой, так что видимо не стоит так считать.

P.S. В случае n>>1 будет нормальное распределение.
P.P.S. Конечно в данном случае такое решение есть бред и стрельба по воробьям из пушки, но в сложных задачках это универсальный метод решения на компьютере.

Неактивен

0    0    #21
19.03.2008 09:28

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам теории вероятности, help!

Dimouse написал:

Функция плотности вероятности p(k)=n!/(n-k)!/k! p^k q^(n-k)

Спасибо! постараюсь осмыслить. smile

Неактивен

0    0    #22
19.03.2008 12:52

Dimouse
Участник (+1)
Откуда: Moscow
Зарегистрирован: 09.12.2007
Сообщений: 63
Вебсайт

Oldskool still rule!

Re: Знатокам теории вероятности, help!

В википедии посмотри, там понятно изложено.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru