From: Kenta Murata Date: 2011-04-24T22:48:59+09:00 Subject: [ruby-dev:43431] [Ruby 1.9 - Feature #4605] Random#randとKernel#randでRangeを扱えるように Issue #4605 has been updated by Kenta Murata. そういえば [ruby-list:48013] では整数の Range だけなら反対しないと言っていた私ですが、 作った patch では Range に対する処理を Random#rand のものを流用したので 浮動小数点数の Range でも受け付けています。 [ruby-list:48013] で整数にこだわっていた理由は、Kernel#rand に引数を与えると整数を返す仕様を維持したほうが良いと考えたからなんですが、 Range 対応は追加機能なので浮動小数点数を返しても問題にはならないだろうと改めて考え直しました。 ---------------------------------------- Feature #4605: Random#randとKernel#randでRangeを扱えるように http://redmine.ruby-lang.org/issues/4605 Author: Yuya Yaguchi Status: Open Priority: Normal Assignee: Category: core Target version: Random#randとKernel#randで引数としてRangeを扱えるようにしてほしいです。 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 #=> TypeError: can't convert Range into Integer Random.new.rand 10 #=> 8 Random.new.rand 7.5 #=> 6.258043599450456 Random.new.rand 10..20 #=> 20 Floatの扱いを変更すると互換性に問題がでてしまいますが、 Rangeを扱えるようにすることでは問題は少ないと思われますし rand(10..20)のように記述できることは便利です。 -- http://redmine.ruby-lang.org