最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript生成隨機數方法匯總

 更新時間:2015年11月12日 15:28:53   投稿:hebedich  
實現(xiàn)隨機數是各種編程語言都很常見的一個編程任務,下面介紹一下在JavaScript如何實現(xiàn)隨機數。非常的簡單實用的例子奉獻給大家,希望大家能夠喜歡。

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

基礎教程請看這里

http://www.fzitv.net/w3school/js/jsref_random.htm

看完教程,應該知道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.使用內置的隨機數發(fā)生方法:(剛剛講過,這里簡單描述下)

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.一個相當優(yōu)秀的的隨機數發(fā)生器程序,能應用于許多領域。

<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方法實現(xiàn),第二種方法改自一個C實現(xiàn),都可以實現(xiàn)編程目的。

實例一:

<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生成隨機數有了相應的了解,希望本文能夠給大家一些啟發(fā)。

相關文章

最新評論

苏尼特右旗| 台北县| 林州市| 太仓市| 曲沃县| 安龙县| 惠州市| 尉犁县| 华安县| 靖宇县| 湄潭县| 永泰县| 濉溪县| 通辽市| 道孚县| 阳城县| 商河县| 陇西县| 清河县| 石门县| 西吉县| 昭苏县| 桐柏县| 前郭尔| 张家川| 宁城县| 武隆县| 县级市| 庄河市| 甘孜| 通江县| 遂溪县| 铜川市| 顺义区| 桐梓县| 崇州市| 稷山县| 七台河市| 南郑县| 三亚市| 枣强县|