【问题标题】:Random numbers out of a set集合中的随机数
【发布时间】:2013-10-01 11:34:46
【问题描述】:

我需要给定集合中的一些随机数。数字的数量和数字本身都必须随机选择。 假设数量的范围是 2 到 5,数字集是 1 到 4。一些可能的结果可能是:
13; 334; 42331; ...

min <input type = "number" id = "min_txt" value="2" min="1" />
max <input type = "number" id = "max_txt" value="5" min="1" />
numbers <input type = "number" id = "numbers_txt" value="4" min="1" max="5" />

<button type="button" onClick="func()">click</button>
<input type = "text" id = "arr_txt" />

<script>
function func(){
    var min = min_txt.value;
    var max = max_txt.value;
    var numbers = numbers_txt.value;
    var arr = [];
    arr_txt.value="";

    // set quantity (e.g. 3)
    var quantity = Math.floor(Math.random() * (max - min + 1)) + min; 

    // actual operation
    for (var i = 0; i < quantity; i++) {
        var number = Math.floor((Math.random() * numbers) + 1);
        arr.push(number);
    }

    // output the result
    for (var i = 0; i < arr.length; i++) {
       arr_txt.value=arr_txt.value+arr[i];
    }
}
</script>

问题是,我几乎没有得到预期的结果。有时我会得到类似 31112342144313124134342131213224 和上面的参数的东西。

【问题讨论】:

  • 在你的 arr.lenth 循环上做一个过滤器,直到某个范围长度

标签: javascript algorithm random numbers


【解决方案1】:

min 是一个字符串。当您通过添加Math.floor(Math.random() * (max - min + 1))min 来计算数量时,它会执行字符串连接,而不是添加。因此,作为数量的结果,您最终可能会得到类似“12”或“22”或“52”的结果。

您可以通过确保您的数值实际上是数字来防止这种情况:

var min = parseInt(min_txt.value);
var max = parseInt(max_txt.value);
var numbers = parseInt(numbers_txt.value);

【讨论】:

    【解决方案2】:
    function getRandom(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    
    function getRandomArray(min, max, minCount, maxCount) {
        var count = getRandom(minCount, maxCount);
        var arr = [];
    
        while (count-- > 0)
            arr.push(getRandom(min, max));
    
        return arr;
    }
    

    将上述函数与适当的 int 参数一起使用

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 2011-11-01
      • 1970-01-01
      • 2023-01-24
      • 2023-01-19
      • 2015-12-20
      相关资源
      最近更新 更多