国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript生成隨機(jī)數(shù)方法匯總

2019-11-20 11:17:01
字體:
供稿:網(wǎng)友

今天有又網(wǎng)友問到我 JavaScript 怎么生成指定范圍數(shù)值隨機(jī)數(shù)。Math.random() 這個(gè)方法相信大家都知道,是用來生成隨機(jī)數(shù)的。不過一般的參考手冊(cè)時(shí)卻沒有說明如何用這個(gè)方法來生成指定范圍內(nèi)的隨機(jī)數(shù)。這次我就來詳細(xì)的介紹一下Math.random(),以及如何用它來生成制定范圍內(nèi)的隨機(jī)數(shù)。

基礎(chǔ)教程請(qǐng)看這里

//m.survivalescaperooms.com/w3school/js/jsref_random.htm

看完教程,應(yīng)該知道Math.random()方法的基本用法了。

利用 parseInt()、Math.floor() 或者 Math.ceil()進(jìn)行四舍五入處理

我們看到,直接使用Math.random()方法,生成的是一個(gè)小于1的數(shù),所以:

Math.random()*5

得到的結(jié)果是一個(gè)小于5的隨機(jī)數(shù)。而我們通常希望得到的是0-5之間的整數(shù),所以我們需要對(duì)得到的結(jié)果四舍五入處理一下,從而得到我們期望的整數(shù)。parseInt()、Math.floor()和Math.ceil()都可以起到四舍五入的作用。

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

由測(cè)試的代碼我們可以看到,parseInt()和Math.floor()的效果是一樣的,都是向下取整數(shù)部分。所以parseInt(Math.random()*5,10)和Math.floor(Math.random()*5)都是生成的0-4之間的隨機(jī)數(shù),Math.ceil(Math.random()*5)則是生成的1-5之間的隨機(jī)數(shù)。

生成指定范圍數(shù)值隨機(jī)數(shù)

所以,如果你希望生成1到任意值的隨機(jī)數(shù),公式就是這樣的:

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

如果你希望生成0到任意值的隨機(jī)數(shù),公式就是這樣的:

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

如果你希望生成任意值到任意值的隨機(jī)數(shù),公式就是這樣的:

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

下面我們來看看javascript生成隨機(jī)數(shù)的其他方法

1.使用內(nèi)置的隨機(jī)數(shù)發(fā)生方法:(剛剛講過,這里簡(jiǎn)單描述下)

Math.random(); //該方法產(chǎn)生一個(gè)0到1之間的浮點(diǎn)數(shù)。Math.floor(Math.random()*10+1); //1-10Math.floor(Math.random()*24);//0-23 

2.基于時(shí)間,亦可以產(chǎn)生隨機(jī)數(shù):

復(fù)制代碼 代碼如下:
var now=new Date();
var number = now.getSeconds(); //這將產(chǎn)生一個(gè)基于目前時(shí)間的0到59的整數(shù)。

var now=new Date();
var number = now.getSeconds()%43; //這將產(chǎn)生一個(gè)基于目前時(shí)間的0到42的整數(shù)。

3.一個(gè)相當(dāng)優(yōu)秀的的隨機(jī)數(shù)發(fā)生器程序,能應(yīng)用于許多領(lǐng)域。

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

我們?cè)賮砜?個(gè)具體的實(shí)例吧,

第一種方法通過重寫Math.random方法實(shí)現(xiàn),第二種方法改自一個(gè)C實(shí)現(xiàn),都可以實(shí)現(xiàn)編程目的。

實(shí)例一:

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

實(shí)例二:

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

好了,通過這些例子,大家應(yīng)該對(duì)javascript生成隨機(jī)數(shù)有了相應(yīng)的了解,希望本文能夠給大家一些啟發(fā)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临沭县| 房山区| 封丘县| 定陶县| 南康市| 黄山市| 中阳县| 百色市| 桑日县| 金湖县| 长垣县| 中方县| 油尖旺区| 黄山市| 吉安县| 石景山区| 中江县| 温宿县| 双城市| 元谋县| 时尚| 仲巴县| 建昌县| 定日县| 承德市| 民和| 宾阳县| 贡嘎县| 绥江县| 台南市| 北碚区| 兴安县| 孙吴县| 金湖县| 西吉县| 恩平市| 化隆| 涞源县| 祁阳县| 咸阳市| 永济市|