>웹 프론트엔드 >JS 튜토리얼 >js_javascript 스킬을 활용한 난수 생성 과정 분석

js_javascript 스킬을 활용한 난수 생성 과정 분석

WBOY
WBOY원래의
2016-05-16 15:30:311549검색

1. 사전 지식

Math.ceil(); //向上取整。

Math.floor(); //向下取整。

Math.round(); //四舍五入。

Math.random(); //0.0 ~ 1.0 之间的一个伪随机数。【包含0不包含1】 //比如0.8647578968666494

Math.ceil(Math.random()*10);   // 获取从1到10的随机整数 ,取0的概率极小。

Math.round(Math.random());  //可均衡获取0到1的随机整数。

Math.floor(Math.random()*10); //可均衡获取0到9的随机整数。

Math.round(Math.random()*10); //基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。

결과가 0~0.4이므로 0.5~1.4는 1...8.5~9.4는 9, 9.5~9.9는 10입니다. 따라서 머리와 꼬리의 분포 간격은 다른 숫자의 절반에 불과합니다.

2. [n, m]의 임의의 정수를 생성합니다
기능: [n, m]의 임의의 정수를 생성합니다.

js가 인증 코드를 생성하거나 옵션을 무작위로 선택할 때 유용합니다. .

//生成从minNum到maxNum的随机数
function randomNum(minNum,maxNum){ 
 switch(arguments.length){ 
 case 1: 
  return parseInt(Math.random()*minNum+1,10); 
 break; 
 case 2: 
  return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10); 
 break; 
  default: 
  return 0; 
  break; 
 } 
} 

프로세스 분석:
Math.random()은 숫자 [0,1)을 생성하므로 Math.random()*5는 숫자 {0,5)를 생성합니다.

일반적으로 정수가 예상되므로 결과를 처리해야 합니다.

parseInt(), Math.floor(), Math.ceil() 및 Math.round()는 모두 정수를 얻을 수 있습니다.

parseInt() 및 Math.floor()의 결과는 반내림됩니다.

그래서 Math.random()*5는 [0,4]에 임의의 정수를 생성합니다.

따라서 [1,max]라는 난수가 생성되며 수식은 다음과 같습니다.

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

따라서 [0,max]부터 임의의 숫자까지 임의의 숫자를 생성합니다. 공식은 다음과 같습니다.

// 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);

위 내용은 js에서 생성된 난수에 대한 포괄적인 분석입니다. 모든 사람에게 도움이 되기를 바랍니다.

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