blob: cde412ed0e69a88e874cb4e8b4a11353ea58b281 [file] [log] [blame]
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)