Как же сделать эту вероятность или получить случайно число от A до N?
С этим вопросом легко справляется функция random_num
Инфо из amxmodx.inc:
/* Generates random integer from a to b. */
native random_num(a,b);
Синтаксис:
random_num ( a,b )
- a - Минимальное число
- b - Максимальное число
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#define PLUGIN "Random integer"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init ( ){
register_plugin ( PLUGIN, VERSION, AUTHOR )
register_clcmd("say /random","random_integer")
}
public random_integer(id){
new A = 0
new B = 100
new MyInteger
MyInteger = random_num(A,B)
//ColorChat(id,GREY,"[Random integer] ^1Random: ^4%d",MyInteger)
if(MyInteger>75){
ColorChat(id,RED,"[Random integer] Random: ^4%d ^1> 75",MyInteger)
}else if(MyInteger>50 && MyInteger < 76 ){
ColorChat(id,NORMAL,"[Random integer] Random: ^1 50 < ^4%d ^1< 76",MyInteger)
}else if(MyInteger>25 && MyInteger <51){
ColorChat(id,GREEN,"[Random integer] Random: ^1 25 < ^4%d ^1< 51",MyInteger)
}else if(MyInteger<26){
ColorChat(id,GREY,"[Random integer] Random: ^4%d ^1< 26",MyInteger)
}
}
Описание:
Так как с самого начала речь пошла о плагине "лохатрон", сделаем "сердце" плагина, а именно так что бы в зависимости от полученного числа выполнялись разные действия. Только у нас вероятность каждого из вариантов равна 25%, так как линейка результатов поделена на равные 4 части.
Можно было поделить так:
- Если MyInteger < 50 - Вероятность 50%
- Если 50 =< MyInteger < 80 - Вероятность 30%
- Если 80 =< MyInteger < 95 - Вероятность 15%
- Если 95 =< MyInteger =< 100 - Вероятность 5%
надеюсь все понять математику и знают, что числа < 5 ( меньше 5 ) это 0 1 2 3 4 ( не берем отрицательные), что бы включить сюда и 5, то нажно поставить меньше или равно =<5
Как все это работает:
После начала выполнения функции, которую вызывает команда say /random, мы регистрируем 3 переменные, первые 2 для задачи минимума и максимума числа,и одна для сохранения случайного числа получаемого с помощью функции random_num. Далее идет каскад условий в виде интервалов от числа до числа, и если полученное нами число совпадает с интервалом условия, ты выводим сообщение.
Для наглядности все сообщения сделаны в разных цветах.
Данная функция получает только Целое случайное число, если нужно получить дробное, то необходимо воспользоваться функцией random_float.