Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вероятность и управление ею / 14 сообщений из 14, страница 1 из 1
17.11.2012, 01:24
    #38042335
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Нужно Rnd выбор в таблице, но с указанием % вероятности.
к примеру значение 0% в таблице чтоб = вероятность запуска этого трека = 0
100% = RND
50% = тоже что и RND только в два раза меньшая вероятность

Если сделать for f=1 to 10000: debug.print int(rnd(1)*200):next то выдаст разные числа. Мне нужно чтоб например, число №3 встречалось в два раза меньше чем обычно. Конечно количество всегда разное, но мне надо именно управлять в % соотношением. Я не знаю какой строить алгоритм. Есть музыка хорошая и не очень, старая и современная. В инструкции будет указано включить трек конкретного исполнителя, какой именно трек - выбирается по RND с учетом % вероятности. + инструкция игнорируется если обращается к тому ж исполнителю быстрее указанного времени (тайм-аут).

Делать игру бег тараканов к финишу по rnd ? слишком много процессов. есть другие варианты ? я по математике не ас.
...
Рейтинг: 0 / 0
17.11.2012, 01:35
    #38042341
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Получается предыдущие значения состязание "тараканов" нужно будет сохранять чтоб были шансы и в 40%, не только в 70-100%. Сохранять значения в таблице б/д - обрадует меня новыми неожиданностями, как всегда. Единственное, можно сохранять в open for random, так как записи индексирование...
Только так вижу как решить задачу. А что еще можно сообразить другое ?
...
Рейтинг: 0 / 0
17.11.2012, 01:38
    #38042342
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
То, что вы в дискретной математике не ас - это видно хотя бы по тому, как вы вероятность делите на вероятность

Вероятно, составить правильный алгоритм могла бы правильная постановка задачи... Поскольку многое зависит не только от ваших общих слов, но и от конкретной реализации. Расскажите, что вы пытаетесь сделать, что получить в результате...
...
Рейтинг: 0 / 0
17.11.2012, 02:07
    #38042359
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Есть общие сценарии (база данных), управляют всем процессом. В зависимости от времени конкретные сценарии активируются либо дезактивируются. Есть сценарии с высшим приоритетом, в том случае игнорируются те которые с меньшим приоритетом. Если приоритеты равны, то они делят между собой права вот в таком варианте:
Код: vbnet
1.
2.
3.
   vMin = PBGrupsSpisok(f1).Fields("PoslidMin")
   vMax = PBGrupsSpisok(f1).Fields("PoslidMax")
   vOprKst = Int(Rnd() * ((vMax - vMin) + 1)) + vMin


Долгий рассказ будет... Это ж серверная версия программы. Это все работает. Сценарии активируют плейлисты. В плейлистах может быть инструкция запустить трек где указан полный Path к файлу. В этом случает запускается конкретный файл. А также сделал возможность указать в плейлисте только исполнителя. Его путь известен. Запускаем програму. Слушатели не будут на все 100% довольны, так как будет играть все подряд. Не ощущается присутствия диджея. Если какие-то треки совсем исключить на времья то тоже плохо. Нужно комбинированный режим.
Задача.
Есть длительный интервал времени - месяц. За этот месяц например все желательные треки чтоб играли +-N раз, другие на +-N*%

Уже давно не секрет, что радиостанции сами по себе работают без вмешательства. Я просто хочу сделать движок чуть по своему. Да и у нас не совсем радиостанция - телеканал (реклама, поздравление, обьявление, информация, новости/фото/видео ютуб от друзей "одноклассники", смс...
...
Рейтинг: 0 / 0
17.11.2012, 02:11
    #38042360
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
я пропустил в предыдущем посте.
Когда указано в инструкции только исполнителя, то нужно чтоб делался RND выбор учитывая % что любят (от 0 до 100)
...
Рейтинг: 0 / 0
17.11.2012, 03:34
    #38042384
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Я постарался сделать отдельный код чтоб показать что именно у меня не получается.
Создаю команду в 10 учасников. Успех первого учасника умножаю на 0%, а №3 - на 50%. В итоге я получаю почти то что хочу.
Но я не понимаю почему повторяется одна и та же последовательность. Должна быть произвольная порядочность, а тут если 30 раз сделать "Забег", то увидите что через каждых 9-10 все дублируется с точностю 1 к 1 кроме №3 и №1.

Если можно, давайте уже этот упрощенный пример рассматривать дальше. Качайте проэкт
...
Рейтинг: 0 / 0
17.11.2012, 08:35
    #38042419
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Кстати, хотелось бы посмотреть на схему данных в вашем MDB (можно отдельно и почтой).
Возможно, будет смысл её немного поменять - например, из ваших постов (в других темах) я не совсем понял, как вы соотносите свойства самих композиций и объединение их (в плейлисты, группы, стили etc).

Просто, чтобы работал ваш "виртуальный DJ", надо делать динамическое переопределение "вероятностей", причем в пределах, причем многофакторное - популярность композиции, популярность исполнителя, популярность стиля, ... причем учитывать и возможность "ручного" задания/отмены композиции - действия, которые должны тоже влиять на изменение "вероятности".
...
Рейтинг: 0 / 0
17.11.2012, 12:00
    #38042454
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Я с утра подумал что пример с рулеткой тоже бы подошел. Есть там красное поле, черное... Программе задать что попадания на черное поле только 40%, красное 100% вероятности. В итоге должно быть и черное и красное, но в габаритном анализе черного должно быть конкретно меньше из сотни попыток. У меня как-бы тоже самое да только треки которые недавно играли не будут играть из-за той причины что у них сохраняется now() их запуска в базу. И есть минимальный таймаут до следующего запуска.
У меня баз несколько. По этому как-бы не получится в 150Кб все + там уже другие задачи
...
Рейтинг: 0 / 0
17.11.2012, 13:26
    #38042506
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Хорошо, я подумаю за выходные... Затем попробую показать, как я вижу методы решения.
Впрочем, нормализованная схема данных не повлияет на методы анализа, конечно.
...
Рейтинг: 0 / 0
17.11.2012, 15:35
    #38042568
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Попробуйте
...
Рейтинг: 0 / 0
17.11.2012, 15:48
    #38042573
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
КазанскийПопробуйте
по вашему примеру всегда лидирует зеленый, но я не пробовал суммировать их в 250 раз, посмотреть будет ли повторение по стандартной схеме или случайно. в понедельник попробую, а то я в гостях, в Белоруссии сейас
...
Рейтинг: 0 / 0
17.11.2012, 18:03
    #38042631
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
по вашему примеру всегда лидирует зеленый
Да, так и задумано! Вероятность выпадения цвета зависит от числа во 2-м столбце. В этом примере вероятность выпадения зеленого в 1,5 раза больше, чем красного, желтого - в 2 раза меньше, чем красного, синего - такая же, как красного и т.д.

Кстати, макрос в файле оказался случайно, он не имеет отношения к теме ;)
...
Рейтинг: 0 / 0
18.11.2012, 01:37
    #38042934
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Я переделал алгоритм (после бани)
У меня в примере, который я приложил к посту, там все значения повторялись один к одному. Не стал рассматривать причины, исследовать что к чему и как. Там был алгоритм такой: дано 10 участников, они бегают на перегонки (бросаем кость случайных чисел для каждого чтоб сделать какие-то шаги к финишу), первый = 0% шансов, И №3 = 50% шансов. Я просто умножал скорость их которая суммировалась на %. Но было конкретное число "бросков кости". Победитель уходил на нулевую позицию, остальные участники оставались на той же дистанции.

Теперь я переделал алгоритм. Условие почти то же. 10 учасников. №1 = 0% шансов, №3 = 50% шансов. Сделал уже не на количество выпаданий случайных чисел, а конкретно пока не будет преодолена дистанция. Например если >1000 тогда участник является победителем и стает на место=место - 1000, все остальные остаются на прежних дистанциях.

Результат этой уже программы лучший, но какой-то он не оживленный, случайны, но как-то то так... Игра на перегонки вышла. Попробую на практике, может и так сойдет
...
Рейтинг: 0 / 0
19.11.2012, 23:48
    #38044751
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вероятность и управление ею
Возвращаясь на Украину, в поезде уже исправил цикл. Теперь случайность можно считать управляемой, хотя это не та случайность когда встретится одно и то же число дважды, но для моей задачи - она меня вполне устраивает. Разброс будет зависеть в моем примере от Public Const LenTrack = 40.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вероятность и управление ею / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]