[Note: parts of this message were removed to make it a legal post.]
Josh said:
# 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.
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.