jsが乱数を生成する過程解析

1860 ワード

一、予備知識

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です.だから、頭尾の分布区間は他の数字の半分しかないです.
二、[n,m]を生成するランダム整数関数機能:[n,m]を生成するランダム整数.
認証コードを生成したり、オプションをランダムに選択したりする場合に有用です.

//   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.randowm()は[0,1]の数を生成するので、Math.random()*5は{0,5}の数を生成する.
通常は整数が期待されますので、得られた結果を処理します.
parseInt()、Math.flor()、Math.ceeir()、Math.round()は整数を得ることができます.
parseInt()とMath.flor()の結果は下に整理されます.
したがって、Math.randowm()*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));
したがって[min,max]の乱数を生成したいです.公式は以下の通りです.

// max -       
// min -       
parseInt(Math.random()*(max-min+1)+min,10);
Math.floor(Math.random()*(max-min+1)+min);
以上はjsの乱数生成に関する全面的な解析です.