|
3D-программирование Вопросы, касающиеся программирования 3D мира |
15.03.2017, 11:59
|
#1
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
процент случайности срабатывания
Не подскажите ли,
Как задать процент случайности срабатывания события?
Допустим звуки из Select выбирались бы рандомно, но для каждого Case задать свой процент случайности....
Я тут нашёл в "Мёртвом острове" одну строчку: If (Rnd (1000) > 998.9) Or (KeyHit (2 ), но, по моему, не совсем то...
Есть наверное какие-то накатанные способы?
|
(Offline)
|
|
15.03.2017, 12:33
|
#2
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: процент случайности срабатывания
Задать веса звуками, рандом построить на весах.
|
(Offline)
|
|
15.03.2017, 13:34
|
#3
|
Разработчик
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений (для 369 пользователей)
|
Ответ: процент случайности срабатывания
Че вы усложняете вечно?
a = Rnd(1, 100)
If a >= 1 And a <= 20 Then
Проиграть первую песенку
ElseIf a > 20 And a <= 50 Then
Проиграть вторую песенку
ElseIf a > 50 Then
Третья песенка
Endif
Последний раз редактировалось DarkInside, 15.03.2017 в 17:30.
|
(Offline)
|
|
15.03.2017, 15:25
|
#4
|
Оператор ЭВМ
Регистрация: 28.01.2013
Сообщений: 33
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: процент случайности срабатывания
DarkInside, спасибо за подсказку. А где тут контроль процесса? Я так понимаю числа от 0 до 100 будут выдёргиваться случайно... а если мне нужно, чтобы первая песенка проигрывалась очень часто, а третья - ну очень, очень редко, тогда как?..
Andvrok, то есть - присвоить каждому значение, и чем "тяжелее", тем чаще проигрывать?..так что ли..
|
(Offline)
|
|
15.03.2017, 17:18
|
#5
|
Разработчик
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений (для 369 пользователей)
|
Ответ: процент случайности срабатывания
DarkInside, спасибо за подсказку. А где тут контроль процесса? Я так понимаю числа от 0 до 100 будут выдёргиваться случайно... а если мне нужно, чтобы первая песенка проигрывалась очень часто, а третья - ну очень, очень редко, тогда как?..
|
Ну так вот эти числа a >= 0 And a < 20 и есть частота срабатывания.
В примере выше шанс, что проиграется первая песня - 20%, вторая - 30%, третья - 50%.
Меняй эти цифры и всё, но чтобы они были от 0 до 100.
Вот так шанс, что проиграется первая песня 70%, вторая - 20%, третья - 10%.
If a >= 1 And a <= 70 Then
Проиграть первую песенку
ElseIf a > 70 And a <= 90 Then
Проиграть вторую песенку
ElseIf a > 90 Then
Третья песенка
Endif
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо DarkInside за это полезное сообщение:
|
|
15.03.2017, 19:23
|
#6
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: процент случайности срабатывания
Сообщение от sdf111
Andvrok, то есть - присвоить каждому значение, и чем "тяжелее", тем чаще проигрывать?..так что ли..
|
В целом да.
Алгоритмы есть разные, например: http://softwareengineering.stackexch...-by-its-weight
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.03.2017, 02:19
|
#7
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: процент случайности срабатывания
http://www.redblobgames.com/articles...age-rolls.html
damage = 0 for int i = 0; i < 6; i++ damage += 1+random(2)
Читай броски кубика как в рпгэ.
|
(Offline)
|
|
18.03.2017, 02:55
|
#8
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: процент случайности срабатывания
Да, опять - двадцать пять!
НЕ ДЕЛАЙТЕ ТАК!!!11
damage = 0 for int i = 0; i < 6; i++ damage += 1+random(2)
ЦПТ:
сумма достаточно большого количества слабо зависимых случайных величин, имеющих примерно одинаковые масштабы (ни одно из слагаемых не доминирует, не вносит в сумму определяющего вклада), имеет распределение, близкое к нормальному
|
У вас тут будет статистически слишком часто середина выпадать.
Как правильно собрать генератор из кубиков
Как получить стандартный шум из равномерного
Зачем брать именно 12 случайных чисел
Ещё о кубиках
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:20.
|