ホームページ >ウェブフロントエンド >jsチュートリアル >javascript_javascriptスキルで乱数を生成する方法のまとめ

javascript_javascriptスキルで乱数を生成する方法のまとめ

WBOY
WBOYオリジナル
2016-05-16 15:32:341498ブラウズ

今日、別のネチズンが、JavaScript を使用して指定された範囲で乱数を生成する方法を私に尋ねました。 Math.random() が乱数を生成するために使用されるメソッドであることは誰もが知っていると思います。ただし、一般的なリファレンス マニュアルでは、この方法を使用して指定された範囲内の乱数を生成する方法については説明されていません。今回はMath.random()の詳細と、それを使って指定範囲内の乱数を生成する方法を紹介します。

基本的なチュートリアルについては、こちらを参照してください

http://www.jb51.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. 組み込みの乱数生成メソッドを使用します: (先ほど述べた、簡単な説明です)

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()C; // 現在の時刻に基づいて 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 メソッドを書き換えることによって実装され、2 番目のメソッドは C 実装から変更されており、どちらもプログラミングの目的を達成できます。

例 1:

<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) &#63; 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>
例 2:

<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 を使用した乱数の生成について誰もが同様に理解できるはずです。この記事がインスピレーションを与えてくれれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。