[#41251] mswin32(もしくはActiveScriptRuby)でRuby/Tkを使うには? — "conundrum /" <conundrum@...>

conundrumです。

12 messages 2005/10/11

[#41284] 条件に合う見出しの内容だけを抽出 — isawa_kz <isawa_kz@...>

井沢と申します。

32 messages 2005/10/14
[#41299] Re: 条件に合う見出しの内容だけを抽出 — Kousuke Honda <kousuke4@...> 2005/10/14

本田です。はじめましてです。

[#41300] Re: 条件に合う見出しの内容だけを抽出 — isawa_kz <isawa_kz@...> 2005/10/14

井沢です

[#41301] Re: 条件に合う見出しの内容だけを抽出 — しん <dezawa@...> 2005/10/14

出沢です

[#41340] Date へのメソッド追加要望 — MATSUNO Tokuhiro <tokuhirom@...>

tokuhirom@Inamode6:897 です。

19 messages 2005/10/22

[#41371] 北九州市の rubyist へ — Akimichi Tatsukawa <akimichi_tatsukawa@...>

こんにちは。立川察理と申します。

13 messages 2005/10/25

[#41400] 全角スペースを区切りとした文字列分解で — 中村 英夫 <cxn03651@...>

中村と申します。

10 messages 2005/10/27

[#41416] Rubyでこういうの作れますか?(中央銀行編) — Omoti <omoti@...24.net>

Rubyで中央銀行システムを作りたいんですが、できますか?

14 messages 2005/10/29
[#41418] Re: Ruby でこういうの作れますか?(中央銀行編) — Sako Hiroshi <sakoh@...2.so-net.ne.jp> 2005/10/29

[#41420] Re: Ruby でこういうの作れますか?(中央銀行編) — Omoti <omoti@...24.net> 2005/10/29

そんな大規模じゃないですよ!

[#41425] "Programming Ruby 2nd edtion"の邦訳について — "higashi ryota" <ryochin_hgs@...>

始めまして。既出だったらすいません、過去ログで検索したのですが見つけられませ

10 messages 2005/10/30
[#41428] Re: "Programming Ruby 2nd edtion"の邦訳について — Yukihiro Matsumoto <matz@...> 2005/10/30

まつもと ゆきひろです

[ruby-list:41356] 配列のシャッフルのアルゴリズム

From: Shin-ichiro HARA <sinara@...>
Date: 2005-10-24 09:17:53 UTC
List: ruby-list #41356
原です。

最近また巷で話題(?)の配列のシャッフルの話です。

[ruby-list:40915]での

  array.each_index do |idx|
    jdx = rand(idx + 1)
    array[idx], array[jdx] = array[jdx], array[idx]
  end

というアルゴリズムの正当性についての証明が間違っていたので
正しい証明をもう一度!

-----
今、array = [0, 1, 2, ... , n-1] としておいて、

P(k) = 「array[0...k] までは 0,1,...,k-1 が一様にシャッフルさ
         れ、残り array[k..n-1] は動いていない」

とおきます。全てが始まる前、P(0) は正しいのは明らか。今
P(idx) が正しい、つまり array[0..idx-1] は全ての 0,..,idx-1 
の順列が等確率に現れていると仮定する。このとき、

   jdx = rand(idx + 1)
   array[idx], array[jdx] = array[jdx], array[idx]

がなされた後では、array[0..idx] は 0,..,idx の順列になり、
仮定とスワップのさせ方よりそれぞれの順列は等確率に現れる。

以上より P(idx+1) が正しい。よって、帰納的に P(n) すなわち、
一様にシャッフルされることが証明できた。(証終)
-----

P(k) を設定した時点で殆ど証明は終わっていて、こっちの方が証
明が楽ですね。

前回の証明の間違いとは「一様なシャッフル」の解釈の事で、今回
は「全ての順列が等確率」であることを示したのに対し、前回は
「i が j 番目に来る確率」が全ての i, j について等しいことを
示したのに過ぎなかったのでした。


yts さんの日記

  http://d.hatena.ne.jp/yts/20051022#seeall

を読んで前の証明の間違いに気づきました。「最近話題」というの
は、結城さんの

  http://www.hyuki.com/d/200510.html#i20051023

でクイズとして取り上げられたからです。([ruby-list:39597] 
でも同様なことが話題になっていました。) 


In This Thread

Prev Next