18 lines
503 B
JavaScript
18 lines
503 B
JavaScript
|
module.exports = (function (global) {
|
||
|
var uint32 = 'Uint32Array' in global
|
||
|
var crypto = global.crypto || global.msCrypto
|
||
|
var rando = crypto && typeof crypto.getRandomValues === 'function'
|
||
|
var good = uint32 && crypto && rando
|
||
|
if (!good) return Math.random
|
||
|
|
||
|
var arr = new Uint32Array(1)
|
||
|
var max = Math.pow(2, 32)
|
||
|
function random () {
|
||
|
crypto.getRandomValues(arr)
|
||
|
return arr[0] / max
|
||
|
}
|
||
|
|
||
|
random.cryptographic = true
|
||
|
return random
|
||
|
})(typeof self !== 'undefined' ? self : window)
|