1

私は周りを見回しましたが、私の問題に対する有効な解決策が見つかりません。

背景 -- 使用目的は、ダウンタイム アクションの成功を計算するためのライブ RPG グループを簡単に形成することです。所定のフォーム フィールドに数字を入力することにより、スクリプトは、使用する 1 ~ 10 の値を持つ「サイコロ」の総数を計算します。成功と見なされるには、「サイコロ」の各「ロール」で満たす必要がある難易度のしきい値もあります。

totalDice配列のサイズとして使用して乱数を生成するのに問題があります。それを理解したら、指定された難易度のしきい値を超える乱数の総数を数えて表示する方法を見つける必要があります。

これまでの作業例については、こちらを参照してください

var = totalDiceランダム配列のサイズを提供する があります。乱数の値は 1 ~ 10 です。

たとえば、 の場合totalDice= 220、1 から 10 の間で生成された 220 の乱数が必要です。次に、var = totalDiff生成された乱数と比較する必要があるしきい値を提供します。生成された配列を取得して、インスタンスの数をカウントする方法を見つける必要があります=> totalDiff

例: totalDice = 220, totalDiff = 6, totalSuccesses = x, ここでx = the number of elements => 6.

どんな助けでも大歓迎です。

4

2 に答える 2

1

これをチャンクに分割します。それが関数の目的です。

var roll = function() {
    return Math.floor(Math.random() * 10 + 1);
};

var getResult = function(difficulty) {
    return roll() >= difficulty;
};

var getAllResults = function(totalDice, difficulty) {
    var arr = [];
    for (var i = 0; i < totalDice; i++) {
        arr.push(getResult(difficulty));
    }
    return arr;
};

小切手:

var results = getAllResults(220, 6);
var t = 0;
var f = 0;

for (var i = 0; i < results.length; i++) {
    if (results[i]) { 
        t++;
    } else {
        f++;
    }
}
console.log('total rolls', 220);
console.log('total result count (expected 220)', results.length);
console.log('boolean results (expected 220)', t + f);
console.log('successes', t);
console.log('failures', f);
console.log('raw results array', results);

編集:成功の数だけが必要な場合は、それらをカウントする別の関数を作成します。

var getSuccesses = function(results) {
    var successes = 0;
    for (var i = 0; i < results.length; i++) {
        if (results[i]) { 
            successes++;
        } 
    }
    return successes;
};

//Count successes for 175 die rolls at difficulty 8:
var s = getSuccesses(getAllResults(175, 8));
于 2012-10-08T18:51:22.100 に答える
0

テストされていませんが、これを試してください:

var generateRandomInteger = function(minV, maxV) {
    return Math.floor(Math.random() * (1.0 + maxV - minV) + minV);
}

var generateRandomArray = function(n, minV, maxV) {
    var rv = [];
    for (var i=0; i<n; i++) {
       rv.push(generateRandomInteger(minV, maxV));
    }
    return rv;
};
于 2012-10-08T17:58:16.510 に答える