PDA

View Full Version : random() but as a float?


Celson
15/03/2011, 08:03 AM
Is there a function out there that creates a random number with decimals?

pawn_
15/03/2011, 08:43 AM
float(random(...))

wups
15/03/2011, 11:43 AM
What is Dp? Is it the number count after the dot?

jamesbond007
24/12/2011, 06:21 AM
frandom(Float:max, Float:min = 0.0, dp = 4)
{
new
// Get the multiplication for storing fractional parts.
Float:mul = floatpower(10.0, dp),
// Get the max and min as integers, with extra dp.
imin = floatround(min * mul),
imax = floatround(max * mul);
// Get a random int between two bounds and convert it to a float.
return float(random(imax - imin) + imin) / mul;
}


You can use that as:


new Float:rand = frandom(5.5); // Any float from 0.0 to 5.5 (up to 4 dp).
new Float:rand = frandom(5.5, -5.5); // Any float from -5.5 to 5.5 (up to 4 dp).
new Float:rand = frandom(5.5, 0.0, 1); // Any float from 0.0 to 5.5 (up to 1 dp).
new Float:rand = frandom(5.5, -5.5, 1); // Any float from -5.5 to 5.5 (up to 1 dp).


i get tag mismatch on this line
return float(random(imax - imin) + imin) / mul;
:/

Simon
24/12/2011, 08:32 AM
Try changing the header of the method from:

frandom(Float:max, Float:min = 0.0, dp = 4)

to:

Float:frandom(Float:max, Float:min = 0.0, dp = 4)