2004年08月02日 (月)

がちゃがちゃエントリ用 JavaScript 更新

先日配布を始めた iBlog のためのがちゃがちゃエントリ用 JavaScript ファイルを更新しました。がちゃがちゃエントリの説明と設置方法は前のエントリを見てください。

Safari の乱数に関する面白くない仕様に対応しました。


何を更新したかという話をしておきます。

Mac OS X 10.3.4 の Safari 1.2.2 (v125.8) を起動して直ぐにがちゃがちゃすると、表示されるページとその順序が一定になってしまいます。これを解消しました。

GachaGachaEntry.js ではジャンプ先のエントリを選定するのに乱数というのを使っています。こんな具合です。
var entryUUID = entryUUIDsList[Math.floor(Math.random() * entryUUIDsList.length)];
この Math.random() の部分は JavaScript 組み込みの機能で、ここで乱数を発生させるんです。

それで、結果として同じ順序でページが出てくるということはこの Math.random() が起動から同じ順序で数を返してきているということなのです。乱数を発生させるアルゴリズムっていうのがあって、乱数の種が何であるかでどんな数がどんな順序で出てくるか決まります。種が同じであればいつも同じというわけです。ですから Safari はこの乱数の種がいつも同じなんですね。

それじゃあっていうんで、がちゃがちゃしたときの時刻から秒数をとってきて、それだけ分無駄に乱数を発生させた後にエントリを選択するようにしました。何秒にがちゃがちゃするかはこれはもう人それぞれですし、仮に同じ秒数に別な人ががちゃがちゃしても、60 分の 1 の確率で次は違ってくるはずです(正確にはそうじゃないけど)。

といわけで、Math.random() がどんなにへっぽこでも毎回 60 個の分岐があれば乱数らしくなるでしょ、という更新をしました。


Posted: 12:29    | Comment | Trackback


以下、類似エントリです。