# Rand() v. rand(0.1)?

Is there any difference between calling rand() and rand(0.1)?

7stud – wrote:

Is there any difference between calling rand() and rand(0.1)?

takes a look at the rdoc -
http://www.ruby-doc.org/core/classes/Kernel.html#M005955

its defined as “rand(max=0)”
ie. calling rand() is exactly the same as rand(0)

also it “Converts max to an integer using max1 = max.to_i.abs”
ie. max = 0.1 → max1 = 0.1.to_i.abs = 0
ie. rand() results in the same behaviour as rand(0.1)

On Sep 15, 2007, at 3:54 PM, 7stud – wrote:

That was my analysis too, however pickaxe2 has some code on p. 138
that
calls rand(0.1).

You’ve found a bug in the Pickaxe book. I’m guessing but I suspect that

``````sleep(rand(0.1))
``````

should be

``````sleep(0.1 * rand)
``````

That is, I think the idea was to sleep in the range 0.0 to 0.1
seconds, not 0.0 to 1.0 seconds.

Regards, Morton

7stud – wrote:

Is there any difference between calling rand() and rand(0.1)?

## ------------------------------------------------------------ Kernel#rand rand(max=0) => number

`````` Converts _max_ to an integer using max1 = max+.to_i.abs+. [...]
``````

No.

On Sat, Sep 15, 2007 at 09:09:52PM +0900, Yukihiro M. wrote:

|implementation.

It uses Mersenne Twister algorithm which has a period of 2**19937-1.

Excellent! Thank you for the quick and informative response.

On Sat, Sep 15, 2007 at 08:11:25PM +0900, Florian F. wrote:

7stud – wrote:

Is there any difference between calling rand() and rand(0.1)?

## ------------------------------------------------------------ Kernel#rand rand(max=0) => number

``````Converts _max_ to an integer using max1 = max+.to_i.abs+. [...]
``````

No.

Speaking of which . . . obviously rand() doesn’t produce a truly random
number, but it’s reasonably close for some purposes. I’m curious about
just how far off it is, though – because I’m curious about how
appropriate it is to use to simulate dice-rolling for gaming software
(in
the “roleplaying game” sense of the term “gaming”) in Ruby’s
implementation. I’d prefer some kind of a general feel for it before I
write software to statistically analyze the output of millions of
iterations of rand() evaluations.

Matthew R. wrote:

7stud – wrote:

Is there any difference between calling rand() and rand(0.1)?

takes a look at the rdoc -
module Kernel - RDoc Documentation

its defined as “rand(max=0)”
ie. calling rand() is exactly the same as rand(0)

also it “Converts max to an integer using max1 = max.to_i.abs”
ie. max = 0.1 → max1 = 0.1.to_i.abs = 0
ie. rand() results in the same behaviour as rand(0.1)

That was my analysis too, however pickaxe2 has some code on p. 138 that
calls rand(0.1).

Hi,

In message “Re: rand() v. rand(0.1) ?”
on Sat, 15 Sep 2007 20:35:37 +0900, Chad P.
[email protected] writes:

|Speaking of which . . . obviously rand() doesn’t produce a truly random
|number, but it’s reasonably close for some purposes. I’m curious about
|just how far off it is, though – because I’m curious about how
|appropriate it is to use to simulate dice-rolling for gaming software (in
|the “roleplaying game” sense of the term “gaming”) in Ruby’s
|implementation.

It uses Mersenne Twister algorithm which has a period of 2**19937-1.

``````          matz.
``````