How do I get a random number between two random numbers?

Discussion in 'Ruby' started by Alex Untitled, Nov 15, 2009.

  1. I want to create a program that asks you to guess a number between two
    numbers. The problem is that I can't figure out how to make the numbers
    that you're guessing between random and have the random number you are
    guessing between those two numbers. Does anybody know how to do this?
    --
    Posted via http://www.ruby-forum.com/.
     
    Alex Untitled, Nov 15, 2009
    #1
    1. Advertising

  2. Alex Untitled wrote:
    > I want to create a program that asks you to guess a number between two
    > numbers. The problem is that I can't figure out how to make the numbers
    > that you're guessing between random and have the random number you are
    > guessing between those two numbers. Does anybody know how to do this?


    Well, you know how to generate the first two random numbers, right?
    Just take the difference between those two as the range in which to
    generate the third. Simple.

    Best,
    --
    Marnen Laibow-Koser
    http://www.marnen.org

    --
    Posted via http://www.ruby-forum.com/.
     
    Marnen Laibow-Koser, Nov 15, 2009
    #2
    1. Advertising

  3. Marnen Laibow-Koser wrote:
    > Alex Untitled wrote:
    >> I want to create a program that asks you to guess a number between two
    >> numbers. The problem is that I can't figure out how to make the numbers
    >> that you're guessing between random and have the random number you are
    >> guessing between those two numbers. Does anybody know how to do this?

    >
    > Well, you know how to generate the first two random numbers, right?
    > Just take the difference between those two as the range in which to
    > generate the third. Simple.
    >
    > Best,
    > --
    > Marnen Laibow-Koser
    > http://www.marnen.org
    >


    So, would it be something like this?

    num1 = rand(101)
    num2 = rand(101)
    num3 = num1 + num2

    Anyway, thank you!
    --
    Posted via http://www.ruby-forum.com/.
     
    Alex Untitled, Nov 15, 2009
    #3
  4. Alex Untitled

    Tony Arcieri Guest

    [Note: parts of this message were removed to make it a legal post.]

    On Sat, Nov 14, 2009 at 7:54 PM, Alex Untitled <>wrote:

    > I want to create a program that asks you to guess a number between two
    > numbers. The problem is that I can't figure out how to make the numbers
    > that you're guessing between random and have the random number you are
    > guessing between those two numbers. Does anybody know how to do this?
    >


    first + rand(last + 1 - first)

    --
    Tony Arcieri
    Medioh/Nagravision
     
    Tony Arcieri, Nov 15, 2009
    #4
  5. OK, that didn't work. That just added the two numbers. How do I make a
    number between two numbers again? I can't seem to find it.
    --
    Posted via http://www.ruby-forum.com/.
     
    Alex Untitled, Nov 15, 2009
    #5
  6. Alex Untitled wrote:
    > OK, that didn't work. That just added the two numbers. How do I make a
    > number between two numbers again? I can't seem to find it.


    I did not see your reply when I typed this. Thanks!
    --
    Posted via http://www.ruby-forum.com/.
     
    Alex Untitled, Nov 15, 2009
    #6
  7. I found the solution.

    num1 = rand(1001)
    num2 = 1001 + rand(1001)
    number = num1 + rand(num2)
    --
    Posted via http://www.ruby-forum.com/.
     
    Alex Untitled, Nov 15, 2009
    #7
  8. Alex Untitled wrote:
    > I found the solution.
    >
    > num1 = rand(1001)
    > num2 = 1001 + rand(1001)
    > number = num1 + rand(num2)


    This can return: num1 = 1000, num2 = 1001, number = 2001

    Try

    module RandomNumberBetweenTwoRandomNumbers
    def self.generate max
    first = 1 + rand(max - 2);
    second = max - rand(max - (first + 1))
    between = first + 1 + rand((second - first) - 1)
    [first, between, second]
    end
    end

    puts RandomNumberBetweenTwoRandomNumbers::generate 10
    puts RandomNumberBetweenTwoRandomNumbers::generate 100
    puts RandomNumberBetweenTwoRandomNumbers::generate 1000

    --
    Posted via http://www.ruby-forum.com/.
     
    Steve Wilhelm, Nov 16, 2009
    #8
  9. Alex Untitled

    Josh Cheek Guest

    [Note: parts of this message were removed to make it a legal post.]

    On Sat, Nov 14, 2009 at 8:54 PM, Alex Untitled <>wrote:

    > I want to create a program that asks you to guess a number between two
    > numbers. The problem is that I can't figure out how to make the numbers
    > that you're guessing between random and have the random number you are
    > guessing between those two numbers. Does anybody know how to do this?
    > --
    > Posted via http://www.ruby-forum.com/.
    >
    >


    # How about something like:

    max = 100

    low , high = [ rand(max) , rand(max) ].sort

    difference = high - low

    middle = low + rand(difference).to_i #to_i for if low and high have same
    value

    puts "low = #{low}"
    puts "middle = #{middle}"
    puts "high = #{high}"
     
    Josh Cheek, Nov 16, 2009
    #9
  10. Josh Cheek wrote:

    >
    > # How about something like:
    >
    > max = 100
    >
    > low , high = [ rand(max) , rand(max) ].sort
    >
    > difference = high - low
    >
    > middle = low + rand(difference).to_i #to_i for if low and high have
    > same
    > value
    >
    > puts "low = #{low}"
    > puts "middle = #{middle}"
    > puts "high = #{high}"


    The problem with your solution is that low and high can be the same
    number.
    --
    Posted via http://www.ruby-forum.com/.
     
    Steve Wilhelm, Nov 16, 2009
    #10
  11. Alex Untitled

    Josh Cheek Guest

    [Note: parts of this message were removed to make it a legal post.]

    On Mon, Nov 16, 2009 at 1:45 AM, Steve Wilhelm <> wrote:

    > Josh Cheek wrote:
    >
    > >
    > > # How about something like:
    > >
    > > max = 100
    > >
    > > low , high = [ rand(max) , rand(max) ].sort
    > >
    > > difference = high - low
    > >
    > > middle = low + rand(difference).to_i #to_i for if low and high have
    > > same
    > > value
    > >
    > > puts "low = #{low}"
    > > puts "middle = #{middle}"
    > > puts "high = #{high}"

    >
    > The problem with your solution is that low and high can be the same
    > number.
    > --
    > Posted via http://www.ruby-forum.com/.
    >
    >

    In that case, the cardinality of the solution set is 1, perhaps not
    desirable for a guessing game, but it is not stated that this should not
    happen, and if no minimum range is specified, then it is subjective where
    that line is drawn. ie if a solution set with cardinality 1 is not
    appropriate, then what about a solution set with cardinality two? At what
    point do we say the numbers are sufficiently far apart that they are
    acceptable?

    Perhaps a different approach is required altogether. Instead of giving the
    maximum value the numbers can be, give the minimum and maximum difference
    between the numbers. I don't see much value in a minimum number anyway,
    choosing a random number between 90 and 100 doesn't seem to offer anything
    over choosing a minimum number between 0 and 10.

    While I think saying "give me an upper bound between 10 and 20, with a
    target between 0 and that number" is a better approach, it is not what was
    asked for, and I thought it would be better to answer the question as asked,
    than to impose my own restrictions.
     
    Josh Cheek, Nov 16, 2009
    #11
  12. ciao
    a lot of improvements is possible;

    range_size = 64
    n_middle = rand(101) + range_size
    n_decrease = rand(range_size)
    n_left = n_middle - n_decrease
    n_right = n_middle + (range_size - n_decrease - 1)
    p "#{n_left} - #{n_middle} - #{n_right}"
    --
    Posted via http://www.ruby-forum.com/.
     
    Giampiero Zanchi, Nov 16, 2009
    #12
    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. Jekyll
    Replies:
    2
    Views:
    437
    Victor Bazarov
    Apr 24, 2007
  2. Sanchit
    Replies:
    20
    Views:
    18,884
    Richard Bos
    Oct 9, 2008
  3. sintral
    Replies:
    9
    Views:
    4,386
    Ben Bacarisse
    Dec 7, 2008
  4. jko170
    Replies:
    9
    Views:
    137
    jko170
    Jan 21, 2009
  5. PerlFAQ Server
    Replies:
    0
    Views:
    146
    PerlFAQ Server
    Apr 1, 2011
Loading...

Share This Page