01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
2009-02-13 Fri
■ 増殖シミュレーション(2) [dolittle]
1/31に紹介した増殖シミュレーションでは、メソッドをサブルーチンのよ
うに使っていました。プログラムを細かくメソッドに分ける書き方は、慣
れると読みやすいのですが、慣れないとわかりづらいかもしれません。
「難しくて読めない」という感想をいただいたため、次のように展開した
プログラムを紹介しました。プログラムの流れとしては、こちらのほうが
わかりやすいですね。一方、それぞれの部分が何をしているかは、「ここ
は動かしている」「ここは成長させている」「ここは消滅させている」な
どの意味を自分で考える必要があります。
// パラメータ 成熟=16。 寿命=50。 // すべてのカメの性質を定義 (1:メス、2:オス) タートル:誕生=「 年齢=1。性別=乱数(2)。 「性別==1」!なら「自分!"ayumiKiiro.gif" 変身する」そうでなければ「自分!"ayumi.gif" 変身する」実行。 時計=タイマー!作る。 時計!「 自分!(乱数(180)-90)右回り 10 歩く。 年齢=年齢+1。 「年齢>=:寿命」!なら「時計!中断。自分!消える」実行。 」実行。 」。 タートル:衝突=「|相手| 「全部!(性別==1)(相手:性別!=性別)(相手:年齢>=:成熟)(年齢>=:成熟)本当」!なら「 自分!作る 誕生。自分!作る 誕生。自分!作る 誕生。 時計!中断。自分!消える。相手:時計!中断。相手!消える 」実行。 」。 タートル!ペンなし。 // 最初の10匹 タートル!作る 誕生。タートル!作る 誕生。タートル!作る 誕生。タートル!作る 誕生。タートル!作る 誕生。 タートル!作る 誕生。タートル!作る 誕生。タートル!作る 誕生。タートル!作る 誕生。タートル!作る 誕生。
このプログラムを作ったきっかけは、ねずみ算のシミュレーションについ
ての質問でした。基本的には倍々にしていけばよいのですが、2のn乗にな
るので、そのままでは2+4+8+16+...という形になって、2匹から始めて26回
程度の増殖で日本の人口並に増えてしまいます。デフォルトの0.1秒間隔の
タイマーで実行すると、わずか2.6秒後です。ドリトルのタートルが普通に
動くのは数百個が限度でしょうから、あっという間に遅くなって実質的に
止まってしまいます。そこで、このプログラムでは、寿命を設定したり、
偶然の出会いの要素を入れて、「少しの間楽しめて、運がよければ増殖し
て栄える」形にしてみました。
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2012-08-19 23:58