[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

generating negative random numbers

Josselin

1/30/2007 7:05:00 AM

I know how to generate positive random numbers, but is it possible to
generate a random number in a range such [-9..+9] ?
tfyh

joss

5 Answers

Tim Bray

1/30/2007 7:20:00 AM

0


On Jan 29, 2007, at 11:10 PM, Josselin wrote:

> I know how to generate positive random numbers, but is it possible
> to generate a random number in a range such [-9..+9] ?

irb(main):001:0> def rrand(x)
irb(main):002:1> rand(2*x) - x
irb(main):003:1> end
=> nil
irb(main):004:0> rrand 9
=> -7
irb(main):005:0> rrand 9
=> -8
irb(main):006:0> rrand 9
=> 5
irb(main):007:0> rrand 9
=> -8




Farrel Lifson

1/30/2007 7:23:00 AM

0

On 30/01/07, Josselin <josselin@wanadoo.fr> wrote:
> I know how to generate positive random numbers, but is it possible to
> generate a random number in a range such [-9..+9] ?
> tfyh
>
> joss
>
>
>

rand(19) - 9

Farrel

Martin DeMello

1/30/2007 7:52:00 AM

0

On 1/30/07, Josselin <josselin@wanadoo.fr> wrote:
> I know how to generate positive random numbers, but is it possible to
> generate a random number in a range such [-9..+9] ?
> tfyh

class Range
def rand
Kernel::rand(last - first + 1) + first
end
end

(-9..9).rand

martin

Josselin

2/1/2007 8:05:00 AM

0

On 2007-01-30 08:05:18 +0100, Josselin <josselin@wanadoo.fr> said:

> I know how to generate positive random numbers, but is it possible to
> generate a random number in a range such [-9..+9] ?
> tfyh
>
> joss

thanks to all of u, got it, but why there is no 'standard' function in
the lib ...

Christoffer Lernö

2/27/2007 1:13:00 PM

0


On Jan 30, 2007, at 08:52 , Martin DeMello wrote:

> On 1/30/07, Josselin <josselin@wanadoo.fr> wrote:
>> I know how to generate positive random numbers, but is it possible to
>> generate a random number in a range such [-9..+9] ?
>> tfyh
>
> class Range
> def rand
> Kernel::rand(last - first + 1) + first
> end
> end
>
> (-9..9).rand

(-9...10).rand won't give the expected answer. I think the below
should fix the problem when the last entry in the range is excluded:

class Range
def rand
return first if exclude_end? && last == first
Kernel::rand(last - first + (exclude_end? ? 0 : 1)) + first
end
end