2019年3月23日 星期六
用 Javascript 寫一個任意位元的亂數產生器
function random(maxnum) {
// 將產生後的亂數用時間函數運算過, 傳回整數並把它限制在 {0, ..., 最大值-1} 之間:
let srand = Math.floor(Math.random( )*maxnum) ^ new Date().getMilliseconds();
return srand % maxnum ;
}
function srandBits(bits) {
// 產生任意位元數的亂數
let r = bits % 8; // 以 8 位元為單位(次), 產生一個亂數
let num = [ ]; // 初始化儲存陣列
if (r > 0) {
num.push(random(1 << r)); // 先產生餘數位元的亂數
bits -= r;
}
while (bits > 0) { // 還剩下的位元數, 一次產生一個位元組(8 bits = 1 byte)的亂數
num.push(random(256)); // 產生 8 位元的亂數, 0 <= 亂數 < 256
bits -= 8; // 減掉每次產生的 8 位元
}
return num; // 傳回陣列
}
console.log("random:" + srandBits(32));
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言