1. 程式人生 > >JS生成指定位數的隨機

JS生成指定位數的隨機

可能 過程 con 次方 blog dom and 定位 問題:

<html>
<script>
//獲取指定位數的隨機數 function getRandom(num){ var random = Math.floor((Math.random()+Math.floor(Math.random()*9+1))*Math.pow(10,num-1)); } //調用隨機數函數生成10位數的隨機數 getRandom(10);
</script>
</html>

實現思路(文末有代碼過程及運行結果),以獲取10位隨機數為例:

1、Math.random()函數可以獲得0到1之間的小數,Math.pow(10,10)函數進行冪運算等價於10的10次方,Math.floor()函數向下取整去除小數位;

2、組合起來則可以獲得一個10位的隨機數:Math.floor(Math.random()*Math.pow(10,10));

3、但是,如果Math.randow()的第一位小數位為0則可能獲得的是9位隨機數;

4、將Math.randow()加1,排除第一位小數位為0的情況,相應的冪運算減一位

Math.floor((Math.random()+1))*Math.pow(10,9));

如此將獲得一個10位的隨機數,但是都將以1開頭;

5、為了開頭也能隨機取數,可以將1替換為Math.floor(Math.random()*9+1);

6、最終的代碼如下所示:

Math.floor((Math.random()+Math.floor(Math.random()*9+1))*Math.pow(10,9));

如此就可以獲得一個完全隨機的10位隨機數了;

//獲取隨機數,小數第一位可能為0
console.log(Math.random());
//獲取10位隨機數,如果小數第一位為0則只有9位數
console.log(Math.floor(Math.random()*Math.pow(10,10)));
//隨機數+1,解決小數第一位為0的情況
//但是會導致隨機數的第一位總是為1
console.log(Math.floor((Math.random()+1)*Math.pow(10,9)));
//將隨機數+1也改為隨機加上1~9之間的數字,解決第一位總是為1的問題
console.log(Math.floor((Math.random()+Math.floor(Math.random()*9+1))*Math.pow(10,9)));

Chrome瀏覽器調試運行結果-----------------------------------------------------------------------------
獲取隨機數,小數第一位可能為0:
0.097574709201919
獲取10位隨機數,如果小數第一位為0則只有9位數:
623721160
隨機數+1,解決小數第一位為0的情況:
但是會導致隨機數的第一位總是為1:
1242782126
將隨機數+1也改為隨機加上1~9之間的數字,解決第一位總是為1的問題:
7671051679

JS生成指定位數的隨機