Rubyのrandの挙動はややこしく、最近さらにややこしくなったのでメモ。 乱数メソッドの種類 Rubyには3種類のrandがある。 Kernel#rand (ふつうのrand) Random.rand Random#rand ふるまい(before 1.9.2) 1.9.2までは、 Random#randは引数にInteger, Float, Rangeを扱うことができるのに対し、 Kernel#rand, Random.randではIntegerしか扱うことができない rand 10 #=> 7 rand 7.5 #=> 4 rand 10..20 #=> TypeError: can't convert Range into Integer Random.rand 10 #=> 8 Random.rand 7.5 #=> 3 Random.rand 10..20 #=> TypeEr