31.07.2014, 20:44
Есть функция Random(min, max); возможно ли сделать так, чтобы она выдавала рандомное значение типа Float?
stock Float: floatrandom(Float: fMin, Float: fMax, iDig)
{
iDig = _: floatpower(10.0, iDig);
fMin = Float: (floatround(fMin * Float: iDig));
fMax = Float: (floatround(fMax * Float: iDig));
return (random((_: fMax - _: fMin)) + _: fMin) / Float: iDig;
}
stock Float:frandom(Float:max)
{
return floatdiv(float(random(0)), floatdiv(float(cellmax), max));
}
stock Float:mathfrandom(Float:min, Float:max)
{
return floatadd(frandom(floatsub(max, min)), min);
}
Не я автор этой функции, просто где-то в англоязычном разделе нашел. Честно говоря, я не понимаю, как она работает, но работает. iDig это количество знаков после точки (типа вплоть до чего рандомизировать: десятых, сотых, тысячных и т.д.)
mathfrandom(1.5, 1.8 ) возвращает 2.605813 постоянно. Что-то не так. |
stock Float:mathfrandom(Float:min, Float:max)
{
return floatadd(frandom(floatsub(max, min)), min);
}
Т.е. если iDig = 1, то например на выходе я получу 1.2, если iDig = 2, то 1.25 и т.д.
|