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 2007-01-06 19:19

on 2007-01-06 19:45

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. > > -- > 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 2007-01-06 19:46

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. Suppose the range is 50-99. Generate a random number between 0 and 50, and add 50 to the result. m.

on 2007-01-06 19:49

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

on 2007-01-06 19:56

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

on 2007-01-06 20:02

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

on 2007-01-06 20:06

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 2007-01-06 20:08

On 1/6/07, Ruby N00bie <ralphallan@gmail.com> 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." - Alan Kay

on 2007-01-06 22:44

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