in reply to perl rand() function

The pod for the rand function says
rand Returns a random fractional number greater than or equal to "0"
So yes, it is zero inclusive.

The return data type is not float (there is no such thing in perl). See perldata and perlnumber for more information (and a better explanation of perl number semantics -- to you/me they're all scalars, but some functions/operators are picky).

Back to perldoc, perlfunc says:

Numeric functions "abs", "atan2", "cos", "exp", "hex", "int", "log", "oct", "rand", "sin", "sqrt", "srand"
see int -- it just returns the integer portion of a number. It does not round. If you wish to round, the int documentation itself reccomends "sprintf", "printf", or the "POSIX::floor" and "POSIX::ceil". There is a tutorial on (s)printf in our Tutorials section. POSIX is a standard module, and ceil and floor do what you'd expect.

Now on a different note, it's easy to miss int tucked in the perlfunc, so do like How to RTFM says (great read), use the help of a search engine or even grep/find, especially when you've got a great keyword like round.

update: moodster below links to a question from the perlfaq which is invaluable (and which is also mentioned in How to RTFM -- good advice).

 
______crazyinsomniac_____________________________
Of all the things I've lost, I miss my mind the most.
perl -e "$q=$_;map({chr unpack qq;H*;,$_}split(q;;,q*H*));print;$q/$q;"

  • Comment on (crazyinsomniac) Re: perl rand() function

Replies are listed 'Best First'.
Re: (crazyinsomniac) Re: perl rand() function
by wilstephens (Acolyte) on Apr 16, 2002 at 14:28 UTC
    Thanks for the info and all the links. It completly jumped out of my mind to use sprtintf/printf but I hadn't of heard of the POSIX module.

    Thanks for the heads up!

    --
    Wiliam Stephens <wil@stephens.org>