[#40890] windowsでコンテキストメニューの「印刷」を実行するには? — 岩崎 弘孝 <IH000667@...>
岩崎と申します。
7 messages
2005/07/01
[#40891] 配列をシャッフル — Hideo Konami <konami@...>
小波です。
25 messages
2005/07/01
[#40892] Re: 配列をシャッフル
— Hiroyuki Adachi <hiroyuki-a@...>
2005/07/01
array = [1, 2, 3, 4, 5]
[#40899] Re: 配列をシャッフル
— ktokita <ktokita-p@...>
2005/07/01
時田です
[#40904] slice の仕様とマニュアルの記述 — Hideo Konami <konami@...>
小波です。
6 messages
2005/07/02
[#40939] 値の集合内の中から値の大きな数個のみを取得するには? — 岩崎 弘孝 <IH000667@...>
岩崎と申します。
5 messages
2005/07/27
[#40941] オブジェクト配列の単一化は? — 小西 弘将 <konishi@...>
小西です。いつもお世話になります。
6 messages
2005/07/27
[#40955] irb --noreadline — Masatoshi SEKI <m_seki@...>
咳といいます。
10 messages
2005/07/29
[#40966] Solaris9上のREXML — Hirotaka Mizutani <hirotaka@...>
初めて投稿させて頂きます。水谷と申します。
6 messages
2005/07/29
[ruby-list:40896] Re: 配列をシャッフル
From:
Hideo Konami <konami@...>
Date:
2005-07-01 08:44:38 UTC
List:
ruby-list #40896
小波です。
Hiroyuki Adachi wrote:
> array = [1, 2, 3, 4, 5]
> array.each_index do |idx|
> jdx = rand(idx + 1)
> array[idx], array[jdx] = array[jdx], array[idx]
> end
> p array #=> [1, 4, 5, 2, 3]
どうもありがとうございます。
idx と jdx は,最初どちらも 0 なので,最初のスワップは無駄をやっているみ
たいですね。発想としては,もろに頭から要素をスワップしていくやりかたで,
本当にランダムにシャッフルできるかどうかが気になったので,多数回繰り返さ
せて,得られた統計データをΧ2乗検定してみました。大丈夫みたい。以下は
検定に使ったソースです。検定はパスしました(^^)
#!/usr/local/bin/ruby
ca = []
nt = 100
n = 3000
e = n/6.0
for j in 0 ... 100
c = [0,0,0,0,0,0]
for i in 0 ... n
array = ["1","2","3"]
array.each_index do |idx|
jdx = rand(idx + 1)
array[idx], array[jdx] = array[jdx], array[idx]
end
c[0] += 1 if array == ["1","2","3"]
c[1] += 1 if array == ["1","3","2"]
c[2] += 1 if array == ["2","1","3"]
c[3] += 1 if array == ["2","3","1"]
c[4] += 1 if array == ["3","1","2"]
c[5] += 1 if array == ["3","2","1"]
end
chi2 = 0.0
for x in c
chi2 += (x-e)**2/e
end
ca << chi2
end
ca.sort!
median = (ca[nt/2-1] + ca[nt/2])/2
puts median # この値が自由度5のΧ2乗分布の50%点に一致していればよい。
# => 4.351 (大体これくらいが理想)