JavaScript 随机数生成详解:Math.random 与自定义算法
本文详细介绍 JavaScript 中生成随机数的多种方法。重点解析 Math.random() 函数的返回值范围及如何生成指定区间的整数,包括使用 Math.floor 和 Math.ceil 的技巧。此外,还介绍了基于时间戳生成随机数的方案,以及经典的 Central Randomizer 算法和简洁的自定义随机数函数实现,帮助开发者在实际项目中灵活应用。
JavaScript 随机数基础
JavaScript 随机数基础
一、JavaScript 随机数函数 Math.random()
Math.random 方法详解
public static random() : Number
该方法返回一个伪随机数 n,其取值范围为 0 <= n < 1。之所以称为“伪随机”,是因为该数值在技术上是基于特定算法保密计算得出的,而非真正的随机源。
返回值说明
Number 类型,即一个浮点数字。
生成指定范围的随机数
生成指定范围的随机数
Math.random() 方法不接受参数,默认返回 0 到 1 之间的随机浮点数。若需生成 0 到 n 之间的随机整数,可采用以下公式:
具体格式如下:
Math.floor(Math.random() * n)
若要生成 m 到 n 之间的随机整数,可以使用如下公式:
Math.floor(Math.random() * (n - m + 1)) + m
JavaScript 随机数高级应用
其他随机数生成方法
自 JavaScript 诞生以来,多数浏览器都内置了随机数生成方法。例如:
var number = Math.random();
上述代码生成一个 0 到 1 之间的浮点数。
另一种方法是基于当前时间生成随机数。例如:
var now = new Date();
var number = now.getSeconds();
这将生成一个基于当前秒数的 0 到 59 之间的整数。
var now = new Date();
var number = now.getSeconds() % 43;
这将生成一个基于当前秒数取模后的 0 到 42 之间的整数。
下面介绍一个较为优秀的随机数生成程序,适用于多种场景。
<script language="JavaScript"><!--
// The Central Randomizer 1.3 (C) 1997 by Paul Houle
(houle@msc.cornell.edu)
// See: http://www.msc.cornell.edu/~houle/javascript/randomizer.html
rnd.today = new Date();
rnd.seed = rnd.today.getTime();
function rnd() {
rnd.seed = (rnd.seed * 9301 + 49297) % 233280;
return rnd.seed / (233280.0);
};
function rand(number) {
return Math.ceil(rnd() * number);
};
// end central randomizer. -->
</script>
详细出处参考:https://www.jb51.net/article/12566.htm
简洁的自定义随机数函数
如何轻松获取指定范围的随机数?经过对比,以下函数是目前网上最简洁实用的方案:
实例代码:
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
代码说明:
代码如下:
<script>
// 声明一个随机数变量,默认为 1
var GetRandomn = 1;
// 获取随机范围内数值的函数
function GetRandom(n) { GetRandomn = Math.floor(Math.random() * n + 1) }
// 开始调用,获得一个 1-100 的随机数
GetRandom("100");
// 输出查看
document.write(GetRandomn)
</script>
代码是否相当简洁?GetRandomn 即为随机数变量,可被任意调用。
随机显示特效示例以下是一个随机显示特效的代码示例:
<script>
// 现在开始,首先获得一个 1 到 3 的随机数
GetRandom("3");
// 调用符合随机数的项目
switch (GetRandomn) {
case 1:
document.write("当随机数为 1 则显示本站")
break;
case 2:
document.write("当随机数为 2 则显示 www.jb51.net")
break;
}
</script> 2 下一页阅读全文
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
