「ぎょーむ日誌」目次に戻る | KuboWeb top に戻る | twilog | atom

ぎょーむ日誌 2000-09-(01-10)

苦情・お叱りは, たいへんお手数かけて恐縮ですが, 久保 (kubo@ees.hokudai.ac.jp) までお知らせください.

2000 年 09 月 01 日 (金)

Boeing 777-200 [777]
トリプルセヴン.Boeing
の新鋭旅客機.古くさい
「ジャンボ」などとは一
線を画した設計.

Ecologists' Universe
Another Universe

2000 年 09 月 02 日 (土)


2000 年 09 月 03 日 (日)

TSUTAYA [大森の TSUTAYA]
深夜 0200 まで営業
してくれてるありが
たい本屋.京急大森
町のすぐ隣.


2000 年 09 月 04 日 (月)

Acer in OFR [カエデ]
いつまでたっても
私には区別できない
イタヤカエデ (ACM)
とオオモミジ (ACP)


2000 年 09 月 05 日 (火)

Night Coffee [夜コーヒー]
680 円の準耐熱ガラスのポット.
100 円の陶製茶碗.この二つは
最近買った.ポットの下は昨晩
というか今朝がた大量に生じた
A4 ウラ紙のごく一部.卓上用.


2000 年 09 月 06 日 (水)

	Subject: Re: [ce-ml 71] initialization of random number series.
	Date: Wed, 06 Sep 2000 10:58:50 +0900
(略)
	From: "TAKENAKA, A." <takenaka@nies.go.jp>
	Date: Wed, 06 Sep 2000 09:37:45 +0900

	> (9月5日の「日誌」から)
	> > 「乱数の種」 をシステムクロック で初期化するように Ranu
	> > クラスを変更してみる. システムクロックとは, Unix の場合
	> >  1970 年 1 月 1 日からの経過秒のことで,いま現在だと 9 億
	> >  8617 万秒あたりの値を示す. これを用いると各時刻で異なる
	> > 初期値が得られる. 
	> 
	> 時刻を乱数の種に使うのはよく使われる手ですが,乱数を利用する
	> プログラムが1秒以下で終わってしまうようなごくごく小規模のも
	> のの場合,続けざまに実行すると,同じ時刻が乱数の種となり,同
	> じ乱数系列が発生してしまうことがあります.
蛇足の補足しますと,「同じ乱数系列が発生」問題というのは,ホ ントは毎回毎回デタラメな乱数がいくつか必要なのに,何べんプロ グラムを再実行しても
3→1→4→1→5→9→2→……
というような「決まった順番でデタラメな数がでる」という状態で す.これは上で議論してる「乱数の種」がいつも同じ値であるため に生じる問題です.
	> これを避けるために,私の自作の乱数ライブラリ(C++)では,乱数
	> 発生オブジェクトが廃棄されるときに,最後にひとつ乱数を発生して
	> カレントディレクトリのmyrandom.iniというファイルに書き出してい
	> ます.
	>
	> 乱数発生オブジェクトは,生成時に,このファイルを探しに行き,見
	> つかったらその内容を読み込んで,これと時刻情報の演算で得られる
	> 値を乱数の種にします.こうすれば,0.1秒しかかからないプログラム
	> を繰り返し実行するような場合も大丈夫です.
たしかにこの方法を採用すると上の問題が避けられます.で,じつ はシステムクロックで乱数の種を初期化する,という方法を採用す る前は,この方法使ってました.今回はそれに加えてファイルいら ずの方法を加えて,
  1. 一様乱数クラス Ranu はデフォルトではシステムクロックで初 期化される.
  2. (このステップは省略化) さらに Ranu::Initialization( "ファ イル名" ) を呼び出す,あるいは Ranu( "ファイル名" ) で オブジェクトを作ると,指定したファイルから乱数の種を読み 込む.
  3. オブジェクトが破壊時に,2. の操作をやっていたならば,乱 数の種を元のファイルに上書きする.ファイルから読みこんでなけ ればそのまま終了.
さて「すぐに終了するプログラム」を書く言語の代表格はと言えば, (このメイリングリストの皆様もよく使っておられる) Perl という ことになるかと思います.
竹中さんのご指摘で不安になったんで,さきほど
	perl -le 'print rand;'
というのを 10000 回ほど呼び出す実験をやってみました.全体で 100 秒ぐらいかかったんで (う,遅い) ,1 秒あたり 100 回ぐら い乱数が生成されたようです.
その結果なんですけど,一様検定とかちゃんとやってないんですけ ど,図示してみたところ「ま,ちゃんと一様じゃない」 (……いい かげんな) という程度には動作してくれてるようです.
…… といいかげんなことばかり書いてると不安になったんで,ネッ ト上で情報を漁ってみました.それで見つけた Perl の関数リファ レンス
	http://www.ns.kogakuin.ac.jp/~b196189/reference/perl/perl.html
によると (これはラクダ本か何かの複写だろうか?)
	srand( time | $$ )
による初期化を推奨してるようですね.この ( ... ) 内の奇怪な 暗号は
「システムクロック, それから今のプロセス id のビット単位の論理和」
という意味です.なーんで論理和取るとよいの ? か私には見当も つきませんけど,プロセス id も利用するのはこれもうまい手です よね.
	sub new {
		my $class = shift;
		my $self = {};
		(…… あーだこーだ ……)
		bless $self, $class;
	}
Barber [近所の床屋]
値段 2100 円と安く回転も
それなりに速いので便利な
店ではある.「1500 円 15
分」というあの琴似の店に
はまだ及ばないが ……


2000 年 09 月 07 日 (木)

Refrecting periodic boundary [反射周期複合境界]
右上の黒いセクターが観測値のあるプロット
とする.まずこれの鏡像セクターを三つ作っ
て図のように配置する.合計 4 セクターになっ
た全体を周期境界条件でつなぐと,どの境界
も「なめらか」に接続できる.「ホントに」4
セクター生成するんで計算量は 4 倍になる.


2000 年 09 月 08 日 (金)

Dydo Espresso Cafe [本日のおやつ]
隣のコンヴィニエンス
ストアー「ポプラ」で
調達.Dydo エスプレッ
ソカフェ.140 円.


2000 年 09 月 09 日 (土)

	int main ( void ) {
        	map<string,int>    string_map;
        	string_map[ "kubo" ] ++;
        	string_map[ "taku" ] += 2;
        	cout << string_map[ "kubo" ] << "\t" << string_map[ "taku" ] << endl;
        	return 0;
	}
Haneda Airport [羽田空港周遊]
バスから見て回る羽田.「地元」民に
なって以来,私は羽田ファンである.
早く新ターミナルビル工事が終わって
国際線とかが来るようになればいいねぇ.
成田空港なんて廃止になっていいから.


2000 年 09 月 10 日 (日)

Pancake, coffee and ThinkPad [小さく焼いたパンケイキ]
おたま一杯ぶんぐらいの
dough を焼くとこれぐら
いのサイズになる.二枚
目はいま焼いてるところ.


KuboLog | KuboWeb