forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   процент случайности срабатывания (http://forum.boolean.name/showthread.php?t=20588)

sdf111 15.03.2017 11:59

процент случайности срабатывания
 
Не подскажите ли,
Как задать процент случайности срабатывания события?
Допустим звуки из Select выбирались бы рандомно, но для каждого Case задать свой процент случайности....
Я тут нашёл в "Мёртвом острове" одну строчку: If (Rnd (1000) > 998.9) Or (KeyHit (28)), но, по моему, не совсем то...
Есть наверное какие-то накатанные способы?:4to:

Andvrok 15.03.2017 12:33

Ответ: процент случайности срабатывания
 
Задать веса звуками, рандом построить на весах.

DarkInside 15.03.2017 13:34

Ответ: процент случайности срабатывания
 
Че вы усложняете вечно?

Код:

a = Rnd(1, 100)
If a >= 1 And a <= 20 Then
    Проиграть первую песенку
ElseIf a > 20 And a <= 50 Then
    Проиграть вторую песенку
ElseIf a > 50 Then
    Третья песенка
Endif


sdf111 15.03.2017 15:25

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

Andvrok, то есть - присвоить каждому значение, и чем "тяжелее", тем чаще проигрывать?..так что ли..

DarkInside 15.03.2017 17:18

Ответ: процент случайности срабатывания
 
Цитата:

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


Andvrok 15.03.2017 19:23

Ответ: процент случайности срабатывания
 
Цитата:

Сообщение от sdf111 (Сообщение 312482)
Andvrok, то есть - присвоить каждому значение, и чем "тяжелее", тем чаще проигрывать?..так что ли..

В целом да.
Алгоритмы есть разные, например: http://softwareengineering.stackexch...-by-its-weight

Nex 18.03.2017 02:19

Ответ: процент случайности срабатывания
 
http://www.redblobgames.com/articles...age-rolls.html
PHP код:

damage 0
for int i 06i++
    
damage += 1+random(2

Читай броски кубика как в рпгэ.

impersonalis 18.03.2017 02:55

Ответ: процент случайности срабатывания
 
Да, опять - двадцать пять!
НЕ ДЕЛАЙТЕ ТАК!!!11
PHP код:

damage 0
for int i 06i++
    
damage += 1+random(2

ЦПТ:
Цитата:

сумма достаточно большого количества слабо зависимых случайных величин, имеющих примерно одинаковые масштабы (ни одно из слагаемых не доминирует, не вносит в сумму определяющего вклада), имеет распределение, близкое к нормальному
У вас тут будет статистически слишком часто середина выпадать.

Как правильно собрать генератор из кубиков
Как получить стандартный шум из равномерного
Зачем брать именно 12 случайных чисел
Ещё о кубиках


Часовой пояс GMT +4, время: 17:31.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot