Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 15.03.2017, 08:59   #1
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 28
Написано 2 полезных сообщений
(для 2 пользователей)
процент случайности срабатывания

Не подскажите ли,
Как задать процент случайности срабатывания события?
Допустим звуки из Select выбирались бы рандомно, но для каждого Case задать свой процент случайности....
Я тут нашёл в "Мёртвом острове" одну строчку: If (Rnd (1000) > 998.9) Or (KeyHit (2), но, по моему, не совсем то...
Есть наверное какие-то накатанные способы?
(Offline)
 
Ответить с цитированием
Старый 15.03.2017, 09:33   #2
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 746
Написано 343 полезных сообщений
(для 959 пользователей)
Ответ: процент случайности срабатывания

Задать веса звуками, рандом построить на весах.
__________________
(Offline)
 
Ответить с цитированием
Старый 15.03.2017, 10:34   #3
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: процент случайности срабатывания

Че вы усложняете вечно?

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 в 14:30.
(Offline)
 
Ответить с цитированием
Старый 15.03.2017, 12:25   #4
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 28
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: процент случайности срабатывания

DarkInside, спасибо за подсказку. А где тут контроль процесса? Я так понимаю числа от 0 до 100 будут выдёргиваться случайно... а если мне нужно, чтобы первая песенка проигрывалась очень часто, а третья - ну очень, очень редко, тогда как?..

Andvrok, то есть - присвоить каждому значение, и чем "тяжелее", тем чаще проигрывать?..так что ли..
(Offline)
 
Ответить с цитированием
Старый 15.03.2017, 14:18   #5
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: процент случайности срабатывания

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 за это полезное сообщение:
Arton (15.03.2017), sdf111 (17.03.2017)
Старый 15.03.2017, 16:23   #6
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 746
Написано 343 полезных сообщений
(для 959 пользователей)
Ответ: процент случайности срабатывания

Сообщение от sdf111 Посмотреть сообщение
Andvrok, то есть - присвоить каждому значение, и чем "тяжелее", тем чаще проигрывать?..так что ли..
В целом да.
Алгоритмы есть разные, например: http://softwareengineering.stackexch...-by-its-weight
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
sdf111 (17.03.2017)
Старый 17.03.2017, 23:19   #7
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,888
Написано 1,183 полезных сообщений
(для 3,292 пользователей)
Ответ: процент случайности срабатывания

http://www.redblobgames.com/articles...age-rolls.html
damage 0
for int i 06i++
    
damage += 1+random(2
Читай броски кубика как в рпгэ.
(Offline)
 
Ответить с цитированием
Старый 17.03.2017, 23:55   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,920 пользователей)
Ответ: процент случайности срабатывания

Да, опять - двадцать пять!
НЕ ДЕЛАЙТЕ ТАК!!!11
damage 0
for int i 06i++
    
damage += 1+random(2
ЦПТ:
сумма достаточно большого количества слабо зависимых случайных величин, имеющих примерно одинаковые масштабы (ни одно из слагаемых не доминирует, не вносит в сумму определяющего вклада), имеет распределение, близкое к нормальному
У вас тут будет статистически слишком часто середина выпадать.

Как правильно собрать генератор из кубиков
Как получить стандартный шум из равномерного
Зачем брать именно 12 случайных чисел
Ещё о кубиках
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Andvrok (20.03.2017), Arton (18.03.2017), mauNgerS (18.03.2017), St_AnGer (18.03.2017)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 14:57.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com