[#18233] [book] blade.nagaokaut.ac.jp/ruby/ruby-list/ — Shin-ichiro Hara <sinara@...>

原です。

21 messages 1999/11/01
[#18239] [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — keiju@... (石塚圭樹) 1999/11/01

けいじゅ@日本ラショナルソフトウェアです.

[#18244] Re: [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — Shin-ichiro Hara <sinara@...> 1999/11/01

原です。

[#18289] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18291] Re: [book] csv_split2 — keiju@... (石塚圭樹) 1999/11/02

けいじゅ@日本ラショナルソフトウェアです.

[#18311] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18338] オブジェクトの非同一性判定 — Ayanosuke <aya@...>

 綾乃介です。

13 messages 1999/11/03

[#18539] [book] $*, etc. — Yasuhiro Fukuma <yasuf@...>

福間@福岡 です。

44 messages 1999/11/11

[#18580] — tokoma@... (中川 誠)

中川です。

44 messages 1999/11/14
[#18619] build on alpha — Go Nakagawa <nakagawa@...> 1999/11/15

もとの質問のかたとは別の中川です。

[#18737] Re: build on alpha — tokoma@... (中川 誠) 1999/11/18

中川です。

[#19144] Re: build on alpha — tokoma@... (中川 誠) 1999/12/04

中川です。長文で失礼します。

[#19341] Re: build on alpha — tokoma@... (中川 誠) 1999/12/09

中川です。

[#19344] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/09

まつもと ゆきひろです

[#19400] Re: build on alpha — tokoma@... (中川 誠) 1999/12/10

中川です。

[#19426] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/11

えぐち@エスアンドイー です。

[#19459] Re: build on alpha — tokoma@... (中川 誠) 1999/12/13

中川です。

[#19461] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/13

えぐち@エスアンドイー です。

[#19506] Re: build on alpha — tokoma@... (中川 誠) 1999/12/14

中川です。

[#19520] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19522] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/15

まつもと ゆきひろです

[#19543] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19562] Re: build on alpha — tokoma@... (中川 誠) 1999/12/15

中川です。

[#19569] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/16

えぐち@エスアンドイー です。

[#19592] Re: build on alpha — tokoma@... (中川 誠) 1999/12/16

中川です。

[#18637] constant? — Kazuhiro Yoshida <moriq.kazuhiro@...>

もりきゅうです。

20 messages 1999/11/16
[#18640] Re: constant? — WATANABE Hirofumi <Hirofumi.Watanabe@...> 1999/11/16

わたなべです.

[#18650] Re: constant? — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/16

もりきゅうです。

[#18657] Re: constant? — matz@... (Yukihiro Matsumoto) 1999/11/16

まつもと ゆきひろです

[#18709] ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...>

塩田です。

18 messages 1999/11/18
[#18779] Re: ADO にて datetime 型の取得 — Masaki Suketa<CQN02273@...> 1999/11/20

助田です.

[#18802] Re: ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...> 1999/11/21

オレンジソフト塩田です。

[#18712] Re: header output in eruby — TAKEUCHi Kahori <take-k@...>

たけうちです。

16 messages 1999/11/18
[#18716] Re: header output in eruby — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/11/18

なひです.

[#18830] mod_ruby-0.1.4 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

16 messages 1999/11/22

[#18853] initializer polymorphism? — Takeyuki Watadani <watadani@...>

渡谷といいます。

25 messages 1999/11/23

[#18911] Re: eRuby 変換後の無駄 (?) な改行 — TAKEUCHi Kahori <take-k@...>

たけうちです。

14 messages 1999/11/25

[#18914] Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...>

石橋秀仁です。

43 messages 1999/11/25
[#18975] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/11/27

[#19020] Re: Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...> 1999/11/29

石橋秀仁です。

[#19026] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/11/29

[#19081] Re: Ruby standard GUI framework? — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 1999/12/01

たかたです。

[#19092] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/01

[#19112] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/02

[#19131] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/03

[#18948] 他言語との比較 — とみたまさひろ <tommy@...>

とみたです。

18 messages 1999/11/26

[ruby-list:18668] rand

From: Ito Kazumitsu <ito@...>
Date: 1999-11-17 01:47:31 UTC
List: ruby-list #18668
伊藤と申します。

rand のマニュアルに関して気付いたことですが、

日本語版マニュアルには

|rand(max)
|    0からmaxを越えない範囲の整数の乱数を発生します (maxは正の整数). 

とあり、英語版には、

|rand(max)
|    Returns a random integer number greater than or equal to 0 and less
|    than the value of max. (max should be positive.) 

とありますが、これは当然英語版のほうが正しいですね。

さて、rand の仕様がそうなっているとすると、Ruby FAQ の

|7.3 0から51の中から重複のない5つをランダムに選ぶにはどうしますか
|
|次のメソッドは,0からnまでの数の中からm個をランダムに選んだ配列を返します.
|
|    def sample(n, m)
|      if m.zero?
|        []
|      else
|        s = sample(n-1, m-1)
|        t = rand(n+1)
|        s.concat s.include?(t) ? n : t
|      end
|    end

は、次のようにしたほうが、sample(n,m) が rand(n) の自然な拡張に
なって美しいと思います(単に好みの問題ですが)。

|7.3 0から51の中から重複のない5つをランダムに選ぶにはどうしますか
|
|次のメソッドは,0からn-1までのn個の数の中からm個をランダムに選んだ配列を
|返します.
|
|    def sample(n, m)
|      if m.zero?
|        []
|      else
|        s = sample(n-1, m-1)
|        t = rand(n)
|        s.concat s.include?(t) ? n-1 : t
|      end
|    end

しかし、なぜこのアルゴリズムが正しいのか疑問に思ったので、
次のようなプログラムを書いて検証してみました。

# 上のアルゴリズムで n個の数から m個の数を選ぶとき、
# n個の数それぞれが選ばれる確率の配列を求める。

    def sample_p(n, m)
      if m == 1
        a = [ (1.0/(n.to_f)) ]
        a *= n
      else
        a0 = sample_p(n-1, m-1)
        a = []

# i (0<=i<=n-2) が選ばれるのは、すでに選ばれているか、あるいは
# これまで選ばれておらずに今回 rand(n) で選ばれる場合である。

        (0..n-2).each{|i| a << (a0[i]+(1.0-a0[i])*(1.0/(n.to_f)))}

# n-1 が選ばれるのは、今回 rand(n) で選ばれるか、あるいは、
# すでに選ばれている i (0<=i<=n-2) が今回も選ばれる場合である。
 
        p = 1.0/(n.to_f)
        (0..n-2).each{|i| p += a0[i]*(1.0/(n.to_f)) }
        a << p
      end
    end

    p sample_p(20,8)
    p sample_p(100,13)

やってみると、もののみごとに、すべての確率は m/n となりますが、
それが一般に正しいことは、数学的帰納法で容易に証明できますね。
しかし、最初にアルゴリズムを考えた人は賢い。

********************
Ito Kazumitsu <ito@htk.hitachi-cable.co.jp>

In This Thread

Prev Next