You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			33 lines
		
	
	
		
			735 B
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			735 B
		
	
	
	
		
			JavaScript
		
	
| 
											6 years ago
										 | 
 | ||
|  | var rng; | ||
|  | 
 | ||
|  | var crypto = global.crypto || global.msCrypto; // for IE 11
 | ||
|  | if (crypto && crypto.getRandomValues) { | ||
|  |   // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto
 | ||
|  |   // Moderately fast, high quality
 | ||
|  |   var _rnds8 = new Uint8Array(16); | ||
|  |   rng = function whatwgRNG() { | ||
|  |     crypto.getRandomValues(_rnds8); | ||
|  |     return _rnds8; | ||
|  |   }; | ||
|  | } | ||
|  | 
 | ||
|  | if (!rng) { | ||
|  |   // Math.random()-based (RNG)
 | ||
|  |   //
 | ||
|  |   // If all else fails, use Math.random().  It's fast, but is of unspecified
 | ||
|  |   // quality.
 | ||
|  |   var  _rnds = new Array(16); | ||
|  |   rng = function() { | ||
|  |     for (var i = 0, r; i < 16; i++) { | ||
|  |       if ((i & 0x03) === 0) r = Math.random() * 0x100000000; | ||
|  |       _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; | ||
|  |     } | ||
|  | 
 | ||
|  |     return _rnds; | ||
|  |   }; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = rng; | ||
|  | 
 |