javascript生成随机数方法汇总


Posted in Javascript onNovember 12, 2015

今天有又网友问到我 JavaScript 怎么生成指定范围数值随机数。Math.random() 这个方法相信大家都知道,是用来生成随机数的。不过一般的参考手册时却没有说明如何用这个方法来生成指定范围内的随机数。这次我就来详细的介绍一下Math.random(),以及如何用它来生成制定范围内的随机数。

基础教程请看这里

看完教程,应该知道Math.random()方法的基本用法了。

利用 parseInt()、Math.floor() 或者 Math.ceil()进行四舍五入处理

我们看到,直接使用Math.random()方法,生成的是一个小于1的数,所以:

Math.random()*5

得到的结果是一个小于5的随机数。而我们通常希望得到的是0-5之间的整数,所以我们需要对得到的结果四舍五入处理一下,从而得到我们期望的整数。parseInt()、Math.floor()和Math.ceil()都可以起到四舍五入的作用。

var randomNum = Math.random()*5;
alert(randomNum); // 2.9045290905811183 
alert(parseInt(randomNum,10)); // 2
alert(Math.floor(randomNum)); // 2
alert(Math.ceil(randomNum)); // 3

由测试的代码我们可以看到,parseInt()和Math.floor()的效果是一样的,都是向下取整数部分。所以parseInt(Math.random()*5,10)和Math.floor(Math.random()*5)都是生成的0-4之间的随机数,Math.ceil(Math.random()*5)则是生成的1-5之间的随机数。

生成指定范围数值随机数

所以,如果你希望生成1到任意值的随机数,公式就是这样的:

// max - 期望的最大值
parseInt(Math.random()*max,10)+1;
Math.floor(Math.random()*max)+1;
Math.ceil(Math.random()*max);

如果你希望生成0到任意值的随机数,公式就是这样的:

// max - 期望的最大值
parseInt(Math.random()*(max+1),10);
Math.floor(Math.random()*(max+1));

如果你希望生成任意值到任意值的随机数,公式就是这样的:

// max - 期望的最大值
// min - 期望的最小值 
parseInt(Math.random()*(max-min+1)+min,10);
Math.floor(Math.random()*(max-min+1)+min);

下面我们来看看javascript生成随机数的其他方法

1.使用内置的随机数发生方法:(刚刚讲过,这里简单描述下)

Math.random(); //该方法产生一个0到1之间的浮点数。
Math.floor(Math.random()*10+1); //1-10
Math.floor(Math.random()*24);//0-23

2.基于时间,亦可以产生随机数:

var now=new Date(); 

var number = now.getSeconds(); //这将产生一个基于目前时间的0到59的整数。
var now=new Date(); 

var number = now.getSeconds()%43; //这将产生一个基于目前时间的0到42的整数。

3.一个相当优秀的的随机数发生器程序,能应用于许多领域。

<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>

我们再来看2个具体的实例吧,

第一种方法通过重写Math.random方法实现,第二种方法改自一个C实现,都可以实现编程目的。

实例一:

<script language="javascript">  
var native_random = Math.random;
Math.random = function(min, max, exact) {
	if (arguments.length === 0) 
	{
		return native_random();
	} 
	else if (arguments.length === 1) 
	{
		max = min;
		min = 0;
	}
	var range = min + (native_random()*(max - min));
	return exact === void(0) ? Math.round(range) : range.toFixed(exact);
};
document.write(Math.random());
document.write('<br />');
document.write(Math.random(10));
document.write('<br />');
document.write(Math.random(3,10));
document.write('<br />');
document.write(Math.random(2,10,4));
</script>

实例二:

<script type="text/javascript">
var random = (function(){
	var high = 1, low = 1 ^ 0x49616E42;
	var shuffle = function(seed){
		high = seed;
		low = seed ^ 0x49616E42;
	}
	
	return function(){
  	var a = new Date()-0
   	shuffle(a);
  	high = (high << 16) + (high >> 16);
  	high += low;
  		low += high;
   	return high;
 	}
})();
 
alert( random() );
</script>

好了,通过这些例子,大家应该对javascript生成随机数有了相应的了解,希望本文能够给大家一些启发。

Javascript 相关文章推荐
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
JQuery中上下文选择器实现方法
May 18 Javascript
基于JavaScript Array数组方法(新手必看篇)
Aug 20 Javascript
js实现HashTable(哈希表)的实例分析
Nov 21 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
AngularJS指令与指令之间的交互功能示例
Dec 14 Javascript
Javascript刷新页面的实例
Sep 23 Javascript
动态统计当前输入内容的字节、字符数的实例详解
Oct 27 Javascript
使用webpack3.0配置webpack-dev-server教程
May 29 Javascript
es6 super关键字的理解与应用实例分析
Feb 15 Javascript
js正则表达式验证邮件地址
Nov 12 #Javascript
每天一篇javascript学习小结(Boolean对象)
Nov 12 #Javascript
为何JS操作的href都是javascript:void(0);呢
Nov 12 #Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 #Javascript
js图片轮播效果实现代码
Apr 18 #Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 #Javascript
javascript发送短信验证码实现代码
Nov 12 #Javascript
You might like
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
js的event详解。
2006/09/06 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
python远程邮件控制电脑升级版
2019/05/23 Python
django settings.py 配置文件及介绍
2019/07/15 Python
python如何统计代码运行的时长
2019/07/24 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
草船借箭教学反思
2014/02/03 职场文书
岗位职责风险点
2014/03/12 职场文书
合伙经营协议书范本
2014/04/18 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
云冈石窟导游词
2015/02/04 职场文书
文明礼仪倡议书
2015/04/28 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js