>웹 프론트엔드 >JS 튜토리얼 >javascript_javascript 기술에서 난수를 생성하는 방법 요약

javascript_javascript 기술에서 난수를 생성하는 방법 요약

WBOY
WBOY원래의
2016-05-16 15:32:341499검색

오늘 또 다른 네티즌이 JavaScript를 사용하여 지정된 범위의 난수를 생성하는 방법을 물었습니다. 저는 Math.random()이 난수를 생성하는 데 사용되는 메서드라는 것을 모두가 알고 있다고 믿습니다. 그러나 일반 참조 매뉴얼에서는 이 방법을 사용하여 지정된 범위 내에서 난수를 생성하는 방법을 설명하지 않습니다. 이번에는 Math.random()을 자세히 소개하고 이를 사용하여 지정된 범위 내에서 난수를 생성하는 방법을 소개하겠습니다.

기본 튜토리얼은 여기를 참조하세요

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

튜토리얼을 읽은 후에는 Math.random() 메서드의 기본 사용법을 알아야 합니다.

반올림에는 parsInt(), Math.floor() 또는 Math.ceil()을 사용하세요

Math.random() 메서드를 사용하면 1보다 작은 숫자가 직접 생성되므로 다음과 같습니다.

Math.random()*5

얻은 결과는 5보다 작은 난수입니다. 우리가 일반적으로 얻고자 하는 것은 0-5 사이의 정수이므로, 우리가 기대하는 정수를 얻으려면 결과를 반올림해야 합니다. parsInt(), 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

테스트된 코드에서 parsInt()와 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);

자바스크립트를 사용하여 난수를 생성하는 다른 방법을 살펴보겠습니다

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>

두 가지 구체적인 예를 더 살펴보겠습니다.

첫 번째 방법은 Math.random 메서드를 다시 작성하여 구현되고 두 번째 방법은 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>

자, 이 예제를 통해 모든 사람은 자바스크립트로 난수를 생성하는 방법을 이해해야 합니다. 이 기사가 여러분에게 영감을 줄 수 있기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.