Math.random 的不公平

javascript 中的 Math.random 本身並沒有問題, 問題是使用者後繼的操作.

因為通常 random 也使用於 array 身上作取值,

[js]var YourArray=["a","b","c"]; // 如果希望於 YourArray 中任意抽取一值作輸出.
Math.round(Math.random(YourArray.length-1)); // 這樣就發現 "a" 差不多不出現

/*
因為  "a" 的機率只有 0 ~ 0.49 因為四捨五入的關係
所以為了提升各整數數值的 random 機率, 應該另寫 function 負責. */[/js]

{#th_023_.gif}

[js]/*************
Random Number : more balance
*************/
function randomNum(_start,_end){
// include _end number.
var _range = 10;
var _rtn=0;
if(_start==null) _start=10;
if(_end==null){ _end=_start; _start=0; };
while( Math.abs(_end-_start)>_range ){ _range*=10; }
var _tmp = Math.random()*_range;
_rtn = Math.ceil(_tmp/(_range/(_end-_start+1)))+_start-1;
// $.debug("start:"+_start+", end:"+_end+" return:"+ _rtn+"("+_tmp+")");
return _rtn;
}[/js]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料