繁体   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