| 'use strict'; | 
|   | 
| var crypto = require('crypto'); | 
|   | 
| // This string has length 32, a power of 2, so the modulus doesn't introduce a | 
| // bias. | 
| var _randomStringChars = 'abcdefghijklmnopqrstuvwxyz012345'; | 
| module.exports = { | 
|   string: function(length) { | 
|     var max = _randomStringChars.length; | 
|     var bytes = crypto.randomBytes(length); | 
|     var ret = []; | 
|     for (var i = 0; i < length; i++) { | 
|       ret.push(_randomStringChars.substr(bytes[i] % max, 1)); | 
|     } | 
|     return ret.join(''); | 
|   } | 
|   | 
| , number: function(max) { | 
|     return Math.floor(Math.random() * max); | 
|   } | 
|   | 
| , numberString: function(max) { | 
|     var t = ('' + (max - 1)).length; | 
|     var p = new Array(t + 1).join('0'); | 
|     return (p + this.number(max)).slice(-t); | 
|   } | 
| }; |