使用JavaScript获取特定范围内的随机2位数字,其中第一位和第二位数字都受到限制

使用JavaScript获取特定范围内的随机2位数字,其中第一位和第二位数字都受到限制,javascript,math,random,Javascript,Math,Random,我有一个有趣的数学难题要解决 我正在编写一个测试,以验证不允许输入窗口中字段范围之外的值。在大多数情况下,这是非常容易的 我使用的函数如下: function getRanInt(min, max) { let min = Math.ceil(min); let max = Math.floor(max); return Math.floor(Math.random() * (max - min) + min); } let m1_1; let m1_2; m1_1

我有一个有趣的数学难题要解决

我正在编写一个测试,以验证不允许输入窗口中字段范围之外的值。在大多数情况下,这是非常容易的

我使用的函数如下:

function getRanInt(min, max)
{
    let min = Math.ceil(min);
    let max = Math.floor(max);
    return Math.floor(Math.random() * (max - min) + min);
}
let m1_1;
let m1_2;

m1_1 = getRanInt(8,9);
m1_2 = getRanInt(4,9);

m1 = m1_1.toString() + m1_2.toString();
m1 = Number(m1);
要设置要测试的“错误”值的范围

但是,有一个字段在该方法中会造成麻烦。一个字段对每个数字都有限制。因此,第一个数字只能在0-7之间,第二个数字只能在0-3之间

我的第一个想法是简单地将两个数字连接在一起,我可以像这样单独约束:

function getRanInt(min, max)
{
    let min = Math.ceil(min);
    let max = Math.floor(max);
    return Math.floor(Math.random() * (max - min) + min);
}
let m1_1;
let m1_2;

m1_1 = getRanInt(8,9);
m1_2 = getRanInt(4,9);

m1 = m1_1.toString() + m1_2.toString();
m1 = Number(m1);
直到我想了半秒钟,才意识到这只会让我得到错误的值>83,而忽略了一系列可能的错误值,比如24、36、18等等

我一直在绞尽脑汁试图想出一个解决方案,这个解决方案并不复杂,但我一直在画空白。我想我会找你们这些优秀的布莱尼亚克,看看你们是否能帮我解开齿轮

附加:如果有人感兴趣,相关领域的工具提示明确指出:

2 Digits:
1st = 0 - 7
2nd = 0 - 3

要测试所有不正确的值,您可以将您提供的解决方案与第二组值结合使用,这些值可以通过以下方式使用您的函数进行访问:

let result;
if(Math.round(Math.random()))
{
let m1_1;
let m1_2;

m1_1 = getRanInt(8,9);
m1_2 = getRanInt(0,9);

let m1 = m1_1.toString() + m1_2.toString();
result = Number(m1);
}
else
{
    let m2_1;
let m2_2;

m2_1 = getRanInt(0,7);
m2_2 = getRanInt(4,9);

let m2 = m2_1.toString() + m2_2.toString();
result = Number(m2);
}

我只是想知道为什么用户首先会填写错误的值

您可以通过用户输入、使用或输入来阻止这种情况的发生

我将在下面向您展示它的外观,但您可以更进一步,根据
模式
min
max
值覆盖用户所做的任何输入,或者检查输入是否有效

滑块不需要额外的代码,因此这可能是首选方法

函数更新标签(rangeId,rangeValue){
让labelement=document.getElementById(rangeId+“label”);
if(标签元素){
labelement.innerHTML=范围值;
}
}
标签{
显示:无;
字体大小:0.8rem;
}
输入:无效+标签,
.range容器>标签{
显示:内联块;
}
.靶场集装箱{
显示器:flex;
对齐项目:居中;
}
文本输入
需要一个介于0和7之间的数字。
需要一个介于0和3之间的数字。

数字输入 需要一个介于0和7之间的数字。 需要一个介于0和3之间的数字。
范围滑块 0 0
这看起来很有用!我修改了我原来的getRanInt函数,使max=max+1来对抗地板函数总是偏离实际的最大值。嘿,你明白我的意思了。开发人员做出的许多编码决策似乎“很糟糕”。。。但我只是在写代码,以确保他们的坏代码正常工作。我现在正在尝试编写一段代码,可以测试所有非八进制数,因为它们只允许在某些字段中使用八进制数,但仍然允许输入所有十进制数……:D