これつぐです。


[ruby-dev:8628] Re: Enumerable and rand
> まつもと ゆきひろです

>   (1.1..3.7).to_a
>   (1.1...3.7).to_a
> 
> がそれぞれどんな値を返すべきなんでしょう。
> 
>   (1.1..3.7).to_a  => [1.1, 2.1, 3.1]
>   (1.1...3.7).to_a => [1.1, 2.1, 3.1]
>   (1.1..3.7).to_a  => [1.0, 2.0, 3.0]
>   (1.1...3.7).to_a => [1.0, 2.0]
>   (1.1..3.7).to_a  => [1, 2, 3]
>   (1.1...3.7).to_a => [1, 2]
> 
> うーむ。

Kernel#rand(Range) が採用されるとしたら、
Range が Float のときはどうするつもりなのでしょうか?

  * 上記の中のどれか
  * Float は許さない
  * beg から end の範囲の実数(正確には Float)

私は「不許可」か「実数」だと思っていたのですが、
まだ誰もこの件については触れてませんでしたよね?(多分)

で、
私はこの二つが(何か返すなら)似た動作をしたほうがいいと思います。
あえて言えば

  * (1.1..3.7).to_a は不許可
  * rand(1.1..3.7) は Float(たとえば 3.141592654) をかえす。

でしょうか?(まだ決めかねている)

# 1.1 から 3.7 の Float を全部配列にして返す……のは現実的じゃないし……。