[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

rand() v. rand(0.1) ?

7stud 7stud

9/15/2007 10:38:00 AM

Is there any difference between calling rand() and rand(0.1)?
--
Posted via http://www.ruby-....

5 Answers

Florian Frank

9/15/2007 11:11:00 AM

0

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.

--
Florian Frank


Chad Perrin

9/15/2007 11:36:00 AM

0

On Sat, Sep 15, 2007 at 08:11:25PM +0900, Florian Frank 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.

--
CCD CopyWrite Chad Perrin [ http://ccd.ap... ]
Dr. Ron Paul: "Liberty has meaning only if we still believe in it when
terrible things happen and a false government security blanket beckons."

Matthew Rudy Jacobs

9/15/2007 1:00:00 PM

0

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.ht...

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)
--
Posted via http://www.ruby-....

7stud 7stud

9/15/2007 7:54:00 PM

0

Matthew Rudy wrote:
> 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.ht...
>
> 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).
--
Posted via http://www.ruby-....

Morton Goldberg

9/16/2007 3:18:00 PM

0

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