rand() v. rand(0.1) ?

Discussion in 'Ruby' started by 7stud --, Sep 15, 2007.

  1. 7stud --

    7stud -- Guest

    7stud --, Sep 15, 2007
    #1
    1. Advertising

  2. 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
    Florian Frank, Sep 15, 2007
    #2
    1. Advertising

  3. 7stud --

    Chad Perrin Guest

    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.apotheon.org ]
    Dr. Ron Paul: "Liberty has meaning only if we still believe in it when
    terrible things happen and a false government security blanket beckons."
    Chad Perrin, Sep 15, 2007
    #3
  4. 7stud --

    Matthew Rudy Guest

    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)
    --
    Posted via http://www.ruby-forum.com/.
    Matthew Rudy, Sep 15, 2007
    #4
  5. 7stud --

    Chad Perrin Guest

    On Sat, Sep 15, 2007 at 09:09:52PM +0900, Yukihiro Matsumoto wrote:
    > Hi,
    >
    > In message "Re: rand() v. rand(0.1) ?"
    > on Sat, 15 Sep 2007 20:35:37 +0900, Chad Perrin <> 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.


    Excellent! Thank you for the quick and informative response.

    --
    CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
    Amazon.com interview candidate: "When C++ is your hammer, everything starts
    to look like your thumb."
    Chad Perrin, Sep 15, 2007
    #5
  6. 7stud --

    7stud -- Guest

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


    That was my analysis too, however pickaxe2 has some code on p. 138 that
    calls rand(0.1).
    --
    Posted via http://www.ruby-forum.com/.
    7stud --, Sep 15, 2007
    #6
  7. 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
    Morton Goldberg, Sep 16, 2007
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Niko D. Barli

    rand function in Modelsim 5.7c

    Niko D. Barli, Aug 26, 2004, in forum: VHDL
    Replies:
    9
    Views:
    6,299
    Niko D. Barli
    Sep 6, 2004
  2. daniel kaplan

    rand() question

    daniel kaplan, Sep 15, 2004, in forum: Perl
    Replies:
    4
    Views:
    621
    Ian Sedwell
    Sep 21, 2004
  3. Amelyan

    what is rand?

    Amelyan, Mar 31, 2006, in forum: ASP .Net
    Replies:
    3
    Views:
    535
    Kevin Spencer
    Mar 31, 2006
  4. Orhan Demirel

    usage of rand()

    Orhan Demirel, Jul 21, 2003, in forum: C++
    Replies:
    1
    Views:
    391
    Adam Fineman
    Jul 21, 2003
  5. hedylogus

    Beginner Question--rand( )

    hedylogus, Jul 25, 2003, in forum: C++
    Replies:
    23
    Views:
    737
    Cy Edmunds
    Jul 28, 2003
Loading...

Share This Page