PDA

Просмотр полной версии : [Function] RandomizeFloat



makarov
27.04.2015, 23:45
Описание функции:

Аналог нативной функции random, функция для создания случайного float значения.

Параметры:
Float:var - куда будет возвращено значение.
limit - границы.

Функция:


RandomizeFloat(&Float:var, limit)
{
if (limit <= 0)
return false;

static Float:random_value = (random(limit) + (random(1001) * 0.001));

switch(random(2)) {
case 0: var += random_value;
case 1: var -= random_value;
}
return true;
}


Пример использования:


new Float:x, Float:y;
RandomizeFloat(x, 10000);
RandomizeFloat(y, 10000);
SetPlayerPos(playerid, x, y, 10.0);


Автор: makarov. Принимается любая критика и предложения.


Что насчёт того, чтобы не создавать лишних переменных, а сразу выводить полученный результат?

В виде макроса:


#define RandomizeFloat(%0) \
((!random(2) ? (-1) : (1)) * (random(%0) + (random(1001) * 0.001)))

L0ndl3m
01.05.2015, 18:03
Что насчёт того, чтобы не создавать лишних переменных, а сразу выводить полученный результат?

В виде макроса:


#define RandomizeFloat(%0) \
((!random(2) ? (-1) : (1)) * (random(%0) + (random(1001) * 0.001)))

makarov
01.05.2015, 20:44
Что насчёт того, чтобы не создавать лишних переменных, а сразу выводить полученный результат?

В виде макроса:


#define RandomizeFloat(%0) \
((!random(2) ? (-1) : (1)) * (random(%0) + (random(1001) * 0.001)))


Это уже не будет функцией.

Да, макрос куда значительно быстрей функции. Добавлю его в первый пост.