[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>

これつぐです。

21 messages 1999/12/05
[#8534] Re: Enumerable and rand — matz@... (Yukihiro Matsumoto) 1999/12/06

まつもと ゆきひろです

[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>

小松です。

19 messages 1999/12/07
[#8592] Re: [ruby-list:19228] Ruby 1.4.3 — matz@... (Yukihiro Matsumoto) 1999/12/07

まつもと ゆきひろです

[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

47 messages 1999/12/14
[#8646] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/14

なひです.

[#8653] Re: urllib and httplib — matz@... (Yukihiro Matsumoto) 1999/12/14

まつもと ゆきひろです

[#8656] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/15

なひです.

[#8659] Re: urllib and httplib — Wakou Aoyama <wakou@...> 1999/12/15

青山です。

[#8685] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/12/21

なひです.

[#8687] Re: urllib and httplib — TAKAHASHI Masayoshi <maki@...> 1999/12/21

高橋征義です。

[#8690] Re: urllib and httplib — matz@... (Yukihiro Matsumoto) 1999/12/21

まつもと ゆきひろです

[#8717] Re: urllib and httplib — TAKAHASHI Masayoshi <maki@...> 1999/12/24

高橋征義です。

[#8963] Re: urllib and httplib — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/19

なひです.

[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>

新井です。

20 messages 1999/12/14
[#8651] Re: [PATCH] Ruby/Tk — Koji Arai <JCA02266@...> 1999/12/14

新井です。

[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>

金子です。

22 messages 1999/12/21
[#8695] Re: [win] dir name — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/12/22

小田@QNES です。

[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>

青山です。

18 messages 1999/12/27
[#8743] Re: [ruby-list:19945] Re: array + empty string — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>

西@九大です。

64 messages 1999/12/27
[#8744] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8748] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...> 1999/12/28

西@九大です。

[#8751] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/28

まつもと ゆきひろです

[#8767] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...> 1999/12/29

西@九大です。

[#8777] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/30

まつもと ゆきひろです

[#8791] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Minero Aoki <aamine@...> 1999/12/31

あおきです。

[#8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 1999/12/31

まつもと ゆきひろです

[#8793] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — ARIMA Yasuhiro <fit0298@...> 1999/12/31

有馬です。

[#8795] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Akinori MUSHA aka knu <knu@...> 1999/12/31

 knuです。

[#8798] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — matz@... (Yukihiro Matsumoto) 2000/01/01

まつもと ゆきひろです

[#8811] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Akinori MUSHA aka knu <knu@...> 2000/01/03

 knuです。

[ruby-dev:8476] Re: [REQ] {enumerable, integer, range}.rand

From: Kazunori NISHI <kazunori@...>
Date: 1999-12-01 04:53:56 UTC
List: ruby-dev #8476
西@九大です。

From: matz@netlab.co.jp (Yukihiro Matsumoto)
> 意図をできるだけ汲むと、結局array[rand(array.size)]相当の 
> random が求められていて、かつ内容をまぜてしまう randomize,
> shuffleもあっても良いという話なんですかね。

はい、そうです。randomize/shuffle はどうでもいいです(失礼)。ていうか、
どの程度の randomize にするかが難しそうなので。

> を見ても分かる通り、このメソッドはeachだけでは定義できません。
> ですから、Enumerableに含まれる第1要件を満たしていません。

わたくし、Enumerable を誤解しておりました。単に「繰り返しを行うクラス
の支援」であり、each を備えているだけなんですね。Enumerable == Set で
あるといつの間にか思い込んでいました。混乱させて申し訳ありません。

> それなりに嬉しい局面も少なそうです。よってArrayに定義するこ
> とを推します。

はい。納得しました。Array#random で十分です。

> りません。なんだかプログラムの先頭に
...
> と3行追加することで十分のような気がします。

これなんですが、私は「それなりに利用価値があって、機能と名前が一致した
メソッドは、できるだけ組み込みで定義して欲しい」派です。理由は、

  * (適切な名前の)述語は多いほどよい。(と思っている)
  * メソッド数の増加によって実行コストが著しく高くなる事はない。(多分)
  * 例え、後から一行で定義できるものであっても、何十個となると面倒。
  * その場合、require 'my_methods' でもいいが、使わないものまで評価さ
    れると悔しい(無駄に遅そう)。
  * 自作のライブラリを配布する事を考えると、既存のクラスにあまり手を入
    れたくない。(同じような他のライブラリとの conflict が恐い)

です。逆に、まつもとさんは「組み込みの定義は少ない方がよい」と考えられ
ている気がするのですが、もしそうであれば、その理由は何なのでしょうか?

>   * もう一段説得されるまでなにもしない

%w(説得できる? 説得できない? 無理っぽい?).random

と書きたい衝動にかられないでしょうか?それとも、あくまでも、毎回定義す
る、もしくは一度テンポラリ変数の配列を用意して、size を添字にして、、、

#うぅ、お遊びプログラムをよく書くかどうか、の違いな気がしてきたらしい

> rand(Numeric/Range)はともかく、rand(Enumerable)ってどんな挙
> 動をするんですか?

これは先程述べた「Set と誤解」があるので、正しくは rand(Array) の事で、
「その要素の中からランダムに1つの要素を取り出す」を意図していました。

ていうか、「rand」=「ランダムに生成する」もひょっとして思い込みですか?
こう思っていたので、rand(Array)/Array#rand も共に自然だったのですが。

> します。(2)についてですが、randでは「乱数を返す」と思われそ
> うなのでやめた方が良さそうです。

なんか、rand 自身に「ランダムな*数*を生成する」という意味が含まれてい
る気がしてきました。うう、その場合、確かに私の発言は意味不明ですね。。。

------------------------------------------------------------------
九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程三年
      西 和則   ( e-mail: kazunori@swlab.csce.kyushu-u.ac.jp )
------------------------------------------------------------------

In This Thread