簡體   English   中英

從JavaScript中的表單生成一系列隨機數

[英]Generate a series of random numbers from a form in JavaScript

我環顧四周,找不到解決我問題的可行解決方案。

背景-實際的rpg小組很容易形成預期用途,以計算停機操作的成功率。 通過在給定的表單字段中輸入數字,腳本將計算要使用的1到10之間的“骰子”總數。 在“骰子”的每個“骰子”上都需要滿足一個難度閾值才能被認為是成功的。

我在使用totalDice作為數組大小生成隨機數時遇到困難。 一旦我失望了,我將需要找到一種方法來計數和顯示大於給定難度閾值的隨機數的總數。

有關我到目前為止的工作示例, 請參見此處

我有一個var = totalDice ,它提供了隨機數組的大小。 隨機數的值是1-10。

例如,如果totalDice= 220 ,我需要在1到10之間生成220個隨機數。那么我有var = totalDiff ,它提供了一個閾值,我需要將其與生成的隨機數進行比較。 我需要找到一種方法來獲取生成的數組並計算=> totalDiff的實例數。

示例: totalDice = 220totalDiff = 6totalSuccesses = x ,其中x = the number of elements => 6

任何幫助是極大的贊賞。

將其分解成塊,這就是功能的目的。

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));

尚未測試,但請嘗試以下操作:

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;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM