[#8468] require で SEGV — ruby <g96p0935@...>
西本です。
[#8469] [PATCH] -s command line option — nobu.nakada@...
なかだです。
[#8507] mode_t in file.c — Katsuyuki Komatsu <komatsu@...>
小松です。
[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>
これつぐです。
まつもと ゆきひろです
これつぐです。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
ごとけんです
これつぐです。
[#8565] interface declaretion — "Dai.K." <MAP2303@...>
[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
小松です。
まつもと ゆきひろです
小松です。
[#8622] Win32API (Re: Ruby 1.4.3 binaries for Cygwin and DJGPP) — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
有馬@FITECです。
よしだです
[#8623] [BUG?] core dump `ruby -r debug' — IWAMURO Motonori <iwa@...>
岩室@富士通です。
[#8635] slow gsub — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
なひです.
高橋征義です。
なひです.
まつもと ゆきひろです
なひです.
青山です。
なひです.
高橋征義です。
まつもと ゆきひろです
高橋征義です。
なひです.
西@九大です。
なかだです。
あおきです。
[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>
新井です。
新井です。
新井です。
新井です。
永井@知能.九工大です.
新井です。
永井@知能.九工大です.
新井です。
新井です。
[#8665] [mswin32] STDERR does not work during `_function. — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.
金子です。
金子です。
[#8667] make symlinks around libruby.so in instruby.rb — akira yamada / やまだあきら <akira@...>
[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>
金子です。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
えぐち@エスアンドイー です。
なかだです。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
[#8705] [mswin32] 100% CPU usage when use sleep — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
小松です。
[#8722] [mswin32] Win32API — KANEKO Naoshi <wbs01621@...>
金子です。
小松です。
まつもと ゆきひろです
[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
西@九大です。
あおきです。議論も好き。
西@九大です。
あおきです。
まつもと ゆきひろです
有馬です。
knuです。
まつもと ゆきひろです
これつぐです。
knuです。
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
In message "[ruby-dev:8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
まつもと ゆきひろです
ごとけんです
ごとけんです
なかだです。
ごとけんです
[ruby-dev:8474] Re: [REQ] {enumerable, integer, range}.rand
まつもと ゆきひろです
In message "[ruby-dev:8463] Re: [REQ] {enumerable, integer, range}.rand"
on 99/12/01, Kazunori NISHI <kazunori@swlab.csce.kyushu-u.ac.jp> writes:
|From: matz@netlab.co.jp (Yukihiro Matsumoto)
|> でも、それって rand ではなく、shuffleとかrandomizeではないで
|> すかねえ。
|
|それは、「名前」的な問題(Kernel#rand と名前が衝突しているから)ですか?
|それとも「機能」的な問題(要素を全部入れ変えた方が汎用的)ですか?
|
|提案された名前から、前者ではないと思いますが。(前者はむしろ肯定したい、
|という気持ちは後述)。で、後者だとしても
|
| * (! だとすると) self 自身の順序は保ちたい
| * (! でなければ) shuffle.shift などは高価過ぎる
|
|という理由から、rand でいいと思います。あくまで rand(array[array.size])
|と等機能のメソッドを意図してます。これとは別に、shuffle(!)/randomize(!)
|もあってよいと思います。
意図をできるだけ汲むと、結局array[rand(array.size)]相当の
random が求められていて、かつ内容をまぜてしまう randomize,
shuffleもあっても良いという話なんですかね。
ここではまず新参もののshuffleは置いといて話をすると、
(1) そのようなメソッドは必要か
(2) 名前は
(3) どのクラスのメソッドとするか
という3つの質問があります。(1)は割と根源的なので、あとで話を
します。(2)についてですが、randでは「乱数を返す」と思われそ
うなのでやめた方が良さそうです。ごとけんさんの案に従いrandom
の方が良さそうです。(3)ですが、randomeの定義
array[rand(array.size)]
を見ても分かる通り、このメソッドはeachだけでは定義できません。
ですから、Enumerableに含まれる第1要件を満たしていません。ま
た、sortのように「内部的に配列に変換してsort」のような処理が
それなりに嬉しい局面も少なそうです。よってArrayに定義するこ
とを推します。
さて、ここで(1)の「そもそもこのメソッドを組み込みで定義する
ことが必要なのか」という問題に返ると、はっきり言って良く分か
りません。なんだかプログラムの先頭に
class Array
def random() self[rand(size)] end
end
と3行追加することで十分のような気がします。
ちゅーことで、この件に対する現状での私のスタンスは
* もう一段説得されるまでなにもしない
* 追加するならば、Array#random
というところです。shuffleについても
* もう一段説得されるまでなにもしない
* 追加するならば、Array#shuffle または Array#randominze
!メソッドも用意する
です。
|これは、ごとけんさんの rand(range) 案に賛成です。でも range オブジェク
|トを生成するコストは無視していいんですかね?(ここらへんの実装上のコス
|トは想像つかないらしい)。
コストは結構軽いです。
|で、いっそ rand(Numeric/Range/Enumerable) に
|してもいい気がしてます。
rand(Numeric/Range)はともかく、rand(Enumerable)ってどんな挙
動をするんですか?
|rand も、元はシステムコール(カーネル/OS)に依存するから Kernel.rand(10)
|であり、「そこらへんは冗長だからもういいよね。もっと気軽に行こうよ」的
|思想から、rand となった。という経緯だと推測しています。
あたり、よってrand(10)であり、10.randではないということ。