2006-03-10から1日間の記事一覧

SystemStackError

Rubyで無限に深いメソッド呼び出しをすると、SystemStackErrorになります。 def rubyco rubyco end rubyco実行すると、次のようになります。 a.rb:2:in `rubyco': stack level too deep (SystemStackError) from a.rb:2:in `rubyco' from a.rb:4ところで、二…

線形合同法

am

線形合同法による疑似乱数生成器をRubyで書きました。 class LinearCongruentialRandom A = 1812433253 def initialize(seed=314159) @state = seed end def next(max) @state = A * @state + 1 @state % max.to_i.abs end end r = LinearCongruentialRandom…

かき混ぜ法

am

M. D. MacLarenとG. Marsagliaによって提案された、擬似乱数アルゴリズムを「改良」する(と言われている)「かき混ぜ法」です。 課題:maxの扱い 課題:インタフェースを定め、Decoratorパターンに。 class LinearCongruentialRandom A = 1812433253 def in…

asctime, ctime

Time#asctime, Time#ctimeはTimeオブジェクトの文字列表現を返します。Cライブラリのasctimeと違い、末尾の改行はありません。 p Time.now.asctime #=> "Fri Mar 10 19:03:54 2006" p Time.now.ctime #=> "Fri Mar 10 19:03:54 2006"

getutc

Time#getutcはTimeオブジェクトをUTCに変換した新しいTimeオブジェクトを得ます。 p Time.now.asctime #=> "Fri Mar 10 19:06:20 2006" p Time.now.getutc.asctime #=> "Fri Mar 10 10:06:20 2006"

Struct

Structクラスを使って、構造体クラスを作ることができます。 構造体クラスには自動的にアクセサが作られます。 以下のプログラムでは、Peopleというクラスを作っています。 People = Struct.new('People', :name, :age, :mail) alice = People.new('Alice', …

PI

Math::PIは円周率の近似値です。 p Math::PI #=> 3.14159265358979