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?

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

[email protected]

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

[email protected]

So, would it be something like this?

num1 = rand(101)

num2 = rand(101)

num3 = num1 + num2

Anyway, thank you!

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

[email protected]wrote:

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)

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!

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 found the solution.

num1 = rand(1001)

num2 = 1001 + rand(1001)

number = num1 + rand(num2)

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

[email protected]wrote:

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}”

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

On Mon, Nov 16, 2009 at 1:45 AM, Steve W. [email protected]

wrote:

–

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

valueputs “low = #{low}”

puts “middle = #{middle}”

puts “high = #{high}”

The problem with your solution is that low and high can be the same

number.

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}”