HOW-TO produce random numbers within a range?

Hello,
Thanks for reading this.
I am very new to Ruby and have been learning using a tutorial at
http://pine.fm/LearnToProgram/
by Chris (thanks Chris)
After searching fairly thoroughly in forums and tutorials I found no
answer to my problem.
I have come to a point where i need to generate a random number within a
range.

I have learnt that rand(100) produces random numbers from 0 to 99 but i
need to know how to set a minimum for the random number.

Your help would be greatly appreciated.

Thanks in advance, tckl.

···

--
Posted via http://www.ruby-forum.com/.

Just add the minimum value to whatever number you generate. For example, if
you wanted to generate a random number between 0 and 99 with a minimum value
of 20:

rand(80) + 20

···

On 1/6/07, Ruby N00bie <ralphallan@gmail.com> wrote:

I have learnt that rand(100) produces random numbers from 0 to 99 but i
need to know how to set a minimum for the random number.

Your help would be greatly appreciated.

Thanks in advance, tckl.

--

Suppose the range is 50-99.

Generate a random number between 0 and 50, and add 50 to the result.

m.

···

Ruby N00bie <ralphallan@gmail.com> wrote:

Hello,
Thanks for reading this.
I am very new to Ruby and have been learning using a tutorial at
Learn to Program, by Chris Pine
by Chris (thanks Chris)
After searching fairly thoroughly in forums and tutorials I found no
answer to my problem.
I have come to a point where i need to generate a random number within a
range.

I have learnt that rand(100) produces random numbers from 0 to 99 but i
need to know how to set a minimum for the random number.

--
matt neuburg, phd = matt@tidbits.com, Matt Neuburg’s Home Page
Tiger - http://www.takecontrolbooks.com/tiger-customizing.html
AppleScript - http://www.amazon.com/gp/product/0596102119
Read TidBITS! It's free and smart. http://www.tidbits.com

<...>

I have learnt that rand(100) produces random numbers from 0 to 99 but i
need to know how to set a minimum for the random number.

Your help would be greatly appreciated.

<...>

Add the minimum :slight_smile:

def range_rand(min,max)
  min + rand(max-min)
end

···

--
Regards,
Rimantas
--
http://rimantas.com/

Welcome abord !

Easier to make it fit it that fit your self.
The Ultimate Morphing Lego Game.

#!/usr/bin/my_new_lego_game

alias old_rand rand

def rand(min,max)
  until min < r=old_rand(max); end
  return r
end

10.times do |x|
    p rand(1,10)
end

-.rb

···

--
Posted via http://www.ruby-forum.com/.

Ruby N00bie wrote:

Hello,
Thanks for reading this.
I am very new to Ruby and have been learning using a tutorial at
Learn to Program, by Chris Pine
by Chris (thanks Chris)
After searching fairly thoroughly in forums and tutorials I found no
answer to my problem.
I have come to a point where i need to generate a random number within a
range.

I have learnt that rand(100) produces random numbers from 0 to 99 but i
need to know how to set a minimum for the random number.

Your help would be greatly appreciated.

Thanks in advance, tckl.

--
Posted via http://www.ruby-forum.com/\.

You don't need to be able to set a minimum. You simply take what
rand() gives you and add an offset.

25.times{ r = rand(10); print "#{ r } " }

5 1 0 5 4 3 5 0 4 0 7 8 6 8 6 9 7 1 7 9 9 3 5 7 5 => 25

25.times{ r = rand(10); print "#{ r + 50 } " }

57 51 51 58 54 53 56 58 54 57 54 56 57 58 50 56 56 50 58 52 58 55 53 50
56 => 25

You have to do this yourself, say you want a random number between 42 and a
than you have to write

42+rand(a+1-42) # BTW it would be legal to write a - 41 :wink:
It would be nice an exercise to define your own method to do this

HTH
Robert

···

On 1/6/07, Ruby N00bie <ralphallan@gmail.com> wrote:

Hello,
Thanks for reading this.
I am very new to Ruby and have been learning using a tutorial at
Learn to Program, by Chris Pine
by Chris (thanks Chris)
After searching fairly thoroughly in forums and tutorials I found no
answer to my problem.
I have come to a point where i need to generate a random number within a
range.

I have learnt that rand(100) produces random numbers from 0 to 99 but i
need to know how to set a minimum for the random number.

Your help would be greatly appreciated.

Thanks in advance, tckl.

--
Posted via http://www.ruby-forum.com/\.

--
"The real romance is out ahead and yet to come. The computer revolution
hasn't started yet. Don't be misled by the enormous flow of money into bad
defacto standards for unsophisticated buyers using poor adaptations of
incomplete ideas."

- Alan Kay

Thanks very much all three of you.
That's all I needed to know.
tckl

···

--
Posted via http://www.ruby-forum.com/.

Don't do this. It is *really* inefficient. Compare these...

10.times do |x|
     p rand(10000000,10000005) # Your new slow rand
end

10.times do |x|
  p rand(5) + 10000000 # old rand
end

···

On 7/01/2007, at 8:02 AM, Rodrigo Bermejo wrote:

def rand(min,max)
  until min < r=old_rand(max); end
  return r
end