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.

On 1/6/07, Ruby N00bie [email protected] 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.

–

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

Ruby N00bie [email protected] 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.

Suppose the range is 50-99.

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

m.

<…>

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

def range_rand(min,max)

min + rand(max-min)

end

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

Thanks very much all three of you.

That’s all I needed to know.

tckl

Ruby N00bie 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.

–

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

On 1/6/07, Ruby N00bie [email protected] wrote:

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

It would be nice an exercise to define your own method to do this

HTH

Robert

–

“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.”

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

def rand(min,max)

until min < r=old_rand(max); end

return r

end

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