アプリ版:「スタンプのみでお礼する」機能のリリースについて

javascriptとcookieを使って、1日1回だけ引けるおみくじを作りたいと考えています。

http://oshiete.goo.ne.jp/qa/6503255.html
調べてみてこちらのソースを参考にしましたが、
ここにさらに、大吉10%、吉50%、中吉30%、凶10%といったように、
表示される結果の確率を調整したいのですが、どのように書き換えればいいのかが分かりません・・・。

どなたか教えて頂けると助かります。
どうぞよろしくお願いいたします。

A 回答 (2件)

ひとつの案ですが・・・


指定した割合でくじが出てくる関数を作っておいて、くじを引くときはそれを呼び出すとかでは?


以下、そんな一例です
※ 割合は比率(重み)を示すだけなので、合計が100である必要はありません。
※ 後半のテスト部分は不要なので、前半のomikuji関数の定義部分だけですね。

var omikuji = (function(){
 var kuji = [
  ["大吉", 10], ["吉", 50], ["中吉", 30], ["凶", 10]
 ];
 var i, k = 0, n = kuji.length;
 for(i=0; i<n; i++){ k += kuji[i][1], kuji[i][2] = k; }

 return function(){
  var r = Math.random() * k;
  for(var j=0; j<n; j++) if(r<kuji[j][2]) break;
  return kuji[j][0];
 }
})();


//テスト(1000回おみくじを引いてみる)
var res = {}, result = "";
for(var i=0; i<1000; i++){
 var r = omikuji();
 if(res[r]) res[r]++; else res[r] = 1;
}
for(i in res) result += (result?" / ":"") + i + ":" + res[i];
alert(result);

// 結果例
//大吉:100、中吉:297、吉:504、凶:99
    • good
    • 0

難しく考えずに


var unList = [ '大吉', '吉', '吉', '吉', '吉', '吉', '中吉', '中吉', '中吉', '凶' ];
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!