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 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
JavaScript Array扩展实现代码
Oct 14 Javascript
js 实现菜单上下显示附效果图
Nov 21 Javascript
JavaScript使用yield模拟多线程的方法
Mar 19 Javascript
jquery实现的省市区三级联动
Apr 02 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
JavaScript mixin实现多继承的方法详解
Mar 30 Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
npm 更改默认全局路径以及国内镜像的方法
May 16 Javascript
react写一个select组件的实现代码
Apr 03 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
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
php微信开发自定义菜单
2016/08/27 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
Python正则表达式的使用范例详解
2014/08/08 Python
Python中给List添加元素的4种方法分享
2014/11/28 Python
Python聊天室实例程序分享
2016/01/05 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
python视频按帧截取图片工具
2019/07/23 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
基于ccs3的timeline时间线实现方法
2020/04/30 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
盛大二次面试题
2016/11/18 面试题
大学生村官承诺书
2014/03/28 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
公司会议开幕词
2015/01/29 职场文书
MySQL之select、distinct、limit的使用
2021/11/11 MySQL