« ルーレットスクリプトの言迷 | トップページ | お花 »

2007/05/24

黒い○ンダム

スクリプトついでに、もう1題。以前、キハポストVRM4スクリプト挑戦記で「ランダム編」というのを書いたことがあります。つまり、VRMには乱数発生関数などがないので、ビューアーが起動されてからの時間を計ることにより疑似的な乱数を得ようというものです。これを書いた頃は「SetEventTimer」命令でそれを実現したのですが、今では、そのものズバリの「GetSystemTime」という命令がありますので、これを使わない手はないですね。先日のルーレットと同様に進路表示機を使ってルーレットを作ってみることも出来ますが、それは本題でないので暇な人はやってみてください。キハポストの方に書いてあるポイントをランダムに切り替えるという例も同様です。で、厳密に言ってランダムでないのも同じです。GetSystemTimeを使おうが SetEventTimerを使おうが、本質的な違いはない:キーを押すという人間の作業の不確実さに頼っているからです。1ミリ秒単位で反応できる驚異的な能力の持ち主なら毎回結果を出すことができるかもですね。

さて、ここから本題:ポイントで列車が右か左かランダムで分岐させようと思ったら、ポイント(実際はセンサ)を通過する時間が問題になる:人間が列車を運転する場合は、センサ通過時刻は毎回違うだろうからポイント分岐もランダムになるだろう、しかし、列車を完全自動運転する場合は、センサ通過時刻は毎回同じになる筈だから、どっちへ分岐するかも毎回同じ結果になる筈‥‥‥本当にそうか? というわけで、やってみました。

SIGTESTB1.jpg

こんな感じで、編成とセンサを用意します。編成(列車)には、

SetVoltage 1.0

とでも書いて、ビュワー起動と同時に走り出すようにします。センサには、

Var evid0
Var S
SetEventSensor snsev0 evid0

BeginFunc snsev0
  GetSystemTime S
  DrawVar S
EndFunc

として、列車が通過した時間をログに表示するようにします。ビュワーを何度か起動して、表示される時間が同じになるか確認します。で、結果は‥‥‥毎回違います。表示される時間には数10ミリ秒程度のバラツキがあるのです。同じマシン、同じレイアウトでも違ってきます。まあ、うちだけの現象ではないと思うので、みなさんの方でも確認して頂くのもいいかと。原因はいろいろあると思いますが、これくらいバラついてくれれば、充分ランダム関数として実用になるなってところですかね。GetSystemTimeを利用したレイアウトを既に着工中だったりしますので、それはまあ、出来次第ってことで。

追加実験

ちょっと気になったので追加実験。ビュワー起動からある事象までの時間にはバラツキがあると分かりましたが、ある事象からその次の事象まではどうか? という問題です。上記の実験用レイアウトにセンサを1つ追加してそれぞれの通過時刻を調べます。結果の生数値を載せておきましょう。

SIGTEST1.jpg

A   B   差
1807  5139  3332
1817  5109  3292
1836  5128  3292
1824  5116  3292
1806  5138  3332
1840  5132  3292
1826  5119  3293
1809  5141  3332
1823  5115  3292
1840  5122  3282

さて、これをどう解釈しましょう。マニュアルには『内部時計は、画面表示の書き換えにあわせて更新されます。10ミリ秒以上の間隔で増加します』とありますから、ある程度離散的になるのはうなずけます。差をみると、3292、3332という数値が何度も出てきます。むしろ、1つだけ 3293なんてあるのが言迷かも。

当初の目的は、ランダムな運転をする、ということでしたね。上記の結果に従うと、センサAの通過時刻が奇数か偶数かで制御する場合、まあ、ランダムと呼べるかもです。が、センサAが偶数だとBも偶数、Aが奇数だとBも奇数、となる可能性が非常に高く、これではランダムと言えないかもです。やはり、キーを押させるなど、人間の手を介入させた方がいいってことでしょうか‥‥‥。

|

« ルーレットスクリプトの言迷 | トップページ | お花 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/103983/15180514

この記事へのトラックバック一覧です: 黒い○ンダム:

« ルーレットスクリプトの言迷 | トップページ | お花 »