JavascriptでCPANのSub::Rate風のライブラリを書いてみました

typesterさん(面識ゼロです)が以下のブログで書かれていた

Sub::Rateと言うのを書いた

のRateというモジュールを少しアレンジしてJavascriptで書いてみました。

僕が今回書いたRateは確率(正確には度数/母数)ごとに指定した関数を実行するライブラリです。

Javascriptで書けばDOMをいじれるので確率ごとにサイトのレイアウトを変更できたりするかもしれないですし、ちょっとは利用価値がありそうな気がします。

例えば

var test = new Rate(100);//最大値,母数

 

test.add(30,say);//30%の確率でsayを実行したい

test.add(50,say1);//50%の確率でsay1を実行したい

test.add('default',sayDefault);//それ以外はsayDefaultを実行したい

 

test.generate();//指定した確率で関数を実行

とこんな感じです。

また、一度設定したインスタンスのプロパティを消して再使用できます。

test.clear();

test.maxRate = 100;//母数

test.add(20,say);

test.add('default',send);

test.generate();//20%でsay,それ以外でsendを実行する

詳しいソースはgithubに上げましたのでそちらを参照してください。

Rate

インターフェースは似ているといえども内部構造は全然違っていて、僕のソースのほうがtypesterさんの何十倍も非効率です。もっと検索すればもっと良い実装のライブラリがあるかもしれないですね。

もっとお勉強します。。。