오늘 또 다른 네티즌이 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()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) ? 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>
자, 이 예제를 통해 모든 사람은 자바스크립트로 난수를 생성하는 방법을 이해해야 합니다. 이 기사가 여러분에게 영감을 줄 수 있기를 바랍니다.