首页 > JavaScript > 如何在 JavaScript 中的两个指定变量之间生成随机整数?

如何在 JavaScript 中的两个指定变量之间生成随机整数?

上一篇 下一篇

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

分割线

网友回答:

Mozilla 开发者网络页面上有一些示例:

/**
 * 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()返回介于 0(含)和 1(不含)之间的 a。所以我们有一个这样的间隔:Number

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

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

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

我们可以使用 在 [最小, 最大) 间隔内获取对应方。但是,首先我们应该通过减去第二个区间来考虑一点问题:Math.randommin

[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, max) 区间的数字:min

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

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

现在要获取整数,您可以使用 或 。roundceilfloor

你可以使用 ,但这给出了一个不均匀的分布。两者兼而有之,而且只有大约一半的机会滚动:Math.round(Math.random() * (max - min)) + minminmax

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

从区间中排除后,它的滚动机会甚至比 .maxmin

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

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

你不能在这个等式中使用 and,因为现在滚动的机会略少,但您也可以滚动(不需要的)结果。ceil()-1maxmin-1

分割线
网友回答:

var randomnumber = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;

分割线

网友回答:

Math.random()

返回介于最小值(包含)和最大值(包含)之间的整数随机数:

function randomInteger(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

或介于最小值(包括)和最大值(不包括内)之间的任何随机数:

function randomNumber(min, max) {
  return Math.random() * (max - min) + min;
}

有用的示例(整数):

// 0 -> 10
Math.floor(Math.random() * 11);

// 1 -> 10
Math.floor(Math.random() * 10) + 1;

// 5 -> 20
Math.floor(Math.random() * 16) + 5;

// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;

**总是很高兴被提醒(Mozilla):

Math.random() 不提供加密安全的随机
数。不要将它们用于与安全相关的任何内容。请改用 Web
Crypto API,更准确地说是
window.crypto.getRandomValues() 方法。

模板简介:该模板名称为【如何在 JavaScript 中的两个指定变量之间生成随机整数?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 297次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-30
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信图片 企业网站 响应式 微信文章 单页式简历模板 微信素材 html5 微信模板 微信公众平台 自适应
您可能会喜欢的其他模板