当前位置: 首页 > 面试题库 >

在JavaScript中生成特定范围内的随机整数?

秦渝
2023-03-14
问题内容

如何在JavaScript中的两个指定变量之间生成随机整数,例如x = 4y = 8并输出以下任何内容4, 5, 6, 7, 8


问题答案:

一些示例:

/**
 * Returns a random number between min (inclusive) and max (exclusive)
 */
function getRandomArbitrary(min, max) {
    return Math.random() * (max - min) + min;
}

/**
 * Returns a random integer between min (inclusive) and max (inclusive).
 * The value is no lower than min (or the next integer greater than min
 * if min isn't an integer) and no greater than max (or the next integer
 * lower than max if max isn't an integer).
 * Using Math.round() will give you a non-uniform distribution!
 */
function getRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

这是背后的逻辑。这是三个简单的规则:

Math.random()返回Number介于0(含)和1(不含)之间的。所以我们有一个这样的间隔:

[0 .................................... 1)

现在,我们想要一个介于min(含)和max(不含)之间的数字:

[0 .................................... 1)
[min .................................. max)

我们可以使用Math.random来获取[min,max)间隔中的对应对象。但是,首先我们应该通过min从第二个间隔中减去一点来解决这个问题:

[0 .................................... 1)
[min - min ............................ max - min)

这给出:

[0 .................................... 1)
[0 .................................... max - min)

我们现在可以申请Math.random,然后计算对应的对象。让我们选择一个随机数:

                Math.random()
                    |
[0 .................................... 1)
[0 .................................... max - min)
                    |
                    x (what we need)

因此,为了找到x,我们将执行以下操作:

x = Math.random() * (max - min);

不要忘记加min回去,这样我们就可以在[min,max)间隔中得到一个数字:

x = Math.random() * (max - min) + min;

这是MDN的第一个功能。第二个返回一个介于min和之间的整数max,包括两者。

现在,用于获取整数,您可以使用roundceilfloor

您可以使用Math.round(Math.random() * (max - min)) + min,但这会导致分布不均。这两种,minmax只有大约一半的机会卷:

min...min+0.5...min+1...min+1.5   ...    max-0.5....max
└───┬───┘└────────┬───────┘└───── ... ─────┘└───┬──┘   ← Math.round()
   min          min+1                          max

max从区间中排除,它有一个甚至更少的机会比辊min

Math.floor(Math.random() * (max - min +1)) + min您有一个完美均匀的分布。

min.... min+1... min+2 ... max-1... max.... max+1 (is excluded from interval)
|        |        |         |        |        |
└───┬───┘└───┬───┘└─── ... ┘└───┬───┘└───┬───┘   ← Math.floor()
   min     min+1               max-1    max

您不能在该方程式中使用ceil()-1,因为max现在滚动的机会要少一些,但是您也可以滚动(不需要的)min-1结果。



 类似资料:
  • 本文向大家介绍如何在JavaScript中生成特定范围内的随机整数?,包括了如何在JavaScript中生成特定范围内的随机整数?的使用技巧和注意事项,需要的朋友参考一下 要生成随机数,请使用JavaScript Math.random()方法。在这里设置最小值和最大值,并在它们之间生成一个随机数,如以下代码所示: 示例

  • 问题内容: 如何生成int特定范围内的随机值? 我尝试了以下方法,但是这些方法不起作用: 尝试1: 尝试2: 问题答案: 在Java 1.7或更高版本中,执行此操作的标准方法如下: 请参阅相关的JavaDoc。这种方法的优点是不需要显式初始化java.util.Random实例,如果使用不当,可能会引起混乱和错误。 但是,相反,没有办法显式设置种子,因此在测试或保存游戏状态或类似情况有用的情况下,

  • 本文向大家介绍C#生成给定范围内的随机整数,包括了C#生成给定范围内的随机整数的使用技巧和注意事项,需要的朋友参考一下 示例 生成一个介于minValue和之间的随机数maxValue - 1。            

  • 问题内容: 我想在特定范围内生成随机数。(例如范围在65到80之间) 我尝试按照下面的代码,但不是很完整。它还返回大于最大值的值。值(大于80)。 如何生成范围之间的随机数? 问题答案: 给出介于65(含)和80(不含)之间的随机整数,其中之一。

  • 返回指定范围内的随机整数。 使用 Math.random() 生成一个随机数并将其映射到所需的范围,使用 Math.floor() 使其成为一个整数。 const randomIntegerInRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; randomIntegerInRange(0, 5); /

  • 我目前正在创建一个应用程序,它将生成随机数。所以每次它都会生成三个数字num1、num2和num3。这些数字不应该重复。例如,如果num1=1,则num2和num3不能等于1。我尝试过此代码,它将显示0-2之间的三个不同数字。然而,我想生成1-3、2-4、3-5等范围内的随机数。因此,我如何通过使用下面的代码来实现这一点。请帮帮我,因为我是新手。非常感谢。