隨機數生成代碼


隨機數:
0<=Math.random()<1


(1)任意max和min之間取隨機整數的公式:
var r=Math.floor(Math.random()*(max-min+1)+min)

(2)在0~max之間取隨機整數:
var r=Math.floor(Math.random()*(max+1))

1. 取整:
(1)Math.ceil(num) 上取整: 只要超過,就取下一個整數

 


(2)Math.floor(num) 下取整: 只要超過,就抹掉小數部分

 

(3)Math.round(num) 四舍五入取整:

 

二、注意:

(1)Math.floor(num)  vs    parseInt(str)

floor: 參數是number,
不能去掉字符串結尾的非數字字符
parseInt: 參數是字符串,
專門去掉字符串結尾的非數字字符
缺: 強行去掉小數部分,會導致誤差
解決: 首選parseFloat

 

(2)Math.round(num)   VS  toFixed(d)

round: 必須用Math直接調用
    缺: 只能取整
    優: 返回值: number 可直接算數計算
toFixed(d): 可被任意數字類型的值調用
    優: 可按任意小數位數四舍五入(0<=d<=20)
    缺: 返回值: string 先轉為number再計算

(3)自定義round方法: 可按任意小數位數四舍五入
返回number

  

function round(num,d){
    //num* 10的d次方
  num*=Math.pow(10,d);
    //對num四舍五入取整
  num=Math.round(num);
    //num/ 10的d次方
  num/=Math.pow(10,d);
  return num;
}

 

應用,雙色球搖號的代碼

function doubleball(){
  var reds=[];//定義空數組reds
  //反復: 只要reds中少於6個
while(reds.length<6){
//在1~33之間生成一個隨機整數r
var r=Math.floor(Math.random()*33+1);
//遍歷reds中每個元素
for(var i=0;i<reds.length;i++){
//如果reds中當前元素等於r,就退出循環
if(reds[i]==r){break;}
}//(遍歷結束)
//如果i等於reds的元素個數,就將r壓入reds中
if(i==reds.length){reds.push(r);}
}//(循環結束)
//將reds按數字升序排列
reds.sort(function(a,b){return a-b});
//在1~16之間生成一個隨機整數blue
var blue=Math.floor(Math.random()*16+1);
//返回 reds轉為字符串 拼個| 拼上blue
return String(reds)+"|"+blue;
}
document.write("<h1>"+doubleball()+"</h1>");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM