Blame view

node_modules/sockjs-client/lib/utils/random.js 746 Bytes
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  'use strict';
  
  /* global crypto:true */
  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);
    }
  };