[#39464] Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
25 messages
2004/04/01
[#39608] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/02
遅い反応&File.fnmatchは使った事ない&ruby-devの方では
[#39609] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/02
File.fnmatch(と Dir.glob)をちょっと使ってみたのですが、
[#39610] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/02
山本です。
[#39611] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— matz@... (Yukihiro Matsumoto)
2004/05/02
まつもと ゆきひろです
[#39613] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/02
From: matz@ruby-lang.org (Yukihiro Matsumoto)
[#39616] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— matz@... (Yukihiro Matsumoto)
2004/05/02
まつもと ゆきひろです
[#39620] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/03
From: matz@ruby-lang.org (Yukihiro Matsumoto)
[#39621] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— matz@... (Yukihiro Matsumoto)
2004/05/03
まつもと ゆきひろです
[#39622] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/03
From: matz@ruby-lang.org (Yukihiro Matsumoto)
[#39623] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— matz@... (Yukihiro Matsumoto)
2004/05/03
まつもと ゆきひろです
[#39624] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/03
From: matz@ruby-lang.org (Yukihiro Matsumoto)
[#39485] RAA trouble and maintenance — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
5 messages
2004/04/04
[#39513] リファレンスマニュアルを使うには? — "yokoyama" <yokoyama@...0038.net>
yokoyamaともうします。
4 messages
2004/04/08
[#39542] open-uri takes wrong value for Host with proxy — Atsushi SHICHI <ats7@...>
しちと申します。
5 messages
2004/04/12
[#39550] NEW trial (RC?) version of Ruby/Tk — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
10 messages
2004/04/14
[#39566] Re: int/int in Ruby2? — gldwssr@...
I am making elliptic curve crypto.
1 message
2004/04/15
[#39570] RC version of the next Ruby/Tk — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
5 messages
2004/04/18
[#39576] [ANN] nadoka 0.1.0 — SASADA Koichi <ko1@...>
ささだです。
6 messages
2004/04/20
[#39578] [ANN] Algorithm-Diff 0.1 released — MoonWolf <moonwolf@...>
GPLではないdiffライブラリとしてAlgorithm-DiffというのをRAAにリリースしました。
8 messages
2004/04/21
[#39579] Re: 気象庁の... Re: uriってどう使うんでしょうか — Hideyuki Oya <h_oya@...>
oyaです。
10 messages
2004/04/22
[#39588] ruby-ver? 配列のランダム化 — shintani kiyonori <k_shin@...>
毎度、初歩的な質問で申し訳ありません。新谷と申します。
11 messages
2004/04/25
[#39590] Re: ruby-ver? 配列のランダム化
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/04/25
山本です。
[ruby-list:39597] Re: ruby-ver? 配列のランダム化
From:
Shin-ichiro HARA <sinara@...>
Date:
2004-04-26 09:06:35 UTC
List:
ruby-list #39597
原です。
ちょっと気になったので、、
In [ruby-list:39588]
> class Array
> def randomize!
> result = collect{ slice!(rand(length)) }
> replace result
> end
>
> def randomize
> arr=self.dup
> arr.randomize!
> arr
> end
> end
これって動かなくなったんですね。
こんなふうにすればいいですね。
class Array
def randomize
arr = dup
collect{ arr.slice!(rand(arr.length)) }
end
def randomize!
replace(randomize)
end
end
それから、
In [ruby-list:39591]
> >class Array
> > def randomize
> > sort_by{ rand(100) }
> > end
> >
> > def randomize!
> > replace randomize
> > end
> >end
> これだと、要素数が 100 を上回るときにあまりランダムにな
> らないかもしれませんね。
> rand(100) => rand(100 * length) とかすればいいかもしれません。
これはやはり sort を使うこと自体が、コスト高であるのが気に
なります。
さらに、randomize の精度が sort のアルゴリズム依存であって、
例えば stable な sort であるとすると、順序が変わらない確率
が若干高いです。いくら確率を対象としているといって、アルゴ
リズムが確率的なのは気持ち悪いです。(気持ち悪くない人もい
るかも。)
In [ruby-list:39594]
>新谷です。
>直感的に、配列に乱数を割り当てて、sortしていることに相当す
>るのかと思いました。
>sort_byをよく理解していないのですが、ただのrandでは、いけ
>ないのでしょうか。
これは、
sort_by{ rand() }
とするという事ですよね。いいと思います。多分 rand(整数) の
方が乱数生成のコストが低いんでしょうが、「rand界」も随分進
化しているので、あまり気にしなくてもいいんでしょう。
先と同じ理由で、まだ少し気持ち悪さが残るのですが。
In [ruby-list:39593]
> class Array
> def randomize!
> length.times do |i1|
> i2 = rand(length)
> t = self[i1]
> self[i1] = self[i2]
> self[i2] = t
> end
> end
>
> def randomize
> result = self.dup
> result.randomize!
> result
> end
> end
こちらは、アルゴリズムとしてまずいのでは?手で計算する
と [1, 2, 3] をシャッフルして 2 が先頭に来る確率は 10/27
みたい。もちろん 1/3 であるべきですよね。
#そもそも手計算で正答する確率がかなり低いのですが(^^;
def randomize!
(length-1).downto(0) do |i1|
i2 = rand(i1+1)
t = self[i1]
self[i1] = self[i2]
self[i2] = t
end
end
だったらいいかな。
スピードは最初の slice のが速いみたいですね。
一番美しいのは r = rand(nの階乗) を一発だけ計算して、後で
ゴソゴソするアルゴリズムだと思うんですが、r を配列に「デ
コード」するコストが大きくてあまり速くならなそう。