rand.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. var rand = {
  2. alpha : "0123456789",
  3. smallLetter : "abcdefghijklmnopqrstuvwxyz",
  4. bigLetter : "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
  5. specialChars : ",.;:~!@#$%^&*-_",
  6. shuffle : function (arr) {
  7. var len = arr.length;
  8. var randindex, tmp;
  9. for (var i = len; i > 0; i--) {
  10. randindex = Math.floor(Math.random() * i);//随机数的产生范围每次都变化
  11. tmp = arr[randindex];
  12. arr[randindex] = arr[i - 1];
  13. arr[i - 1] = tmp;
  14. }
  15. return arr;
  16. },
  17. genRandStr : function (chars, length, unique) {
  18. var str = [];
  19. for (var i = 0; i < length; i++) {
  20. if (chars.length == 0) break;
  21. var index = this.rand(chars.length);
  22. str.push(chars[index])
  23. if (unique) {
  24. chars.splice(index, 1)
  25. }
  26. }
  27. return str;
  28. },
  29. getRndUniue : function (chars, length) {
  30. var _chars = this.shuffle(chars);
  31. return _chars.splice(0, length);
  32. },
  33. rand : function (max) {
  34. return Math.floor(Math.random() * max);
  35. },
  36. genRandStr : function (chars, length, unique) {
  37. var str = [];
  38. for (var i = 0; i < length; i++) {
  39. if (chars.length == 0) break;
  40. var index = this.rand(chars.length);
  41. str.push(chars[index])
  42. if (unique) {
  43. chars.splice(index, 1)
  44. }
  45. }
  46. return str;
  47. },
  48. randAlpha : function (length, unique) {
  49. var chars = this.alpha.split("");
  50. return this.genRandStr(chars, length, unique);
  51. },
  52. randSmallLetter : function (length, unique) {
  53. var chars = this.smallLetter.split("");
  54. return this.genRandStr(chars, length, unique);
  55. },
  56. randBigLetter : function (length, unique) {
  57. var chars = this.bigLetter.split("");
  58. return this.genRandStr(chars, length, unique)
  59. },
  60. randCombin: function (combin, length, unique){
  61. var chars = "";
  62. var combin = combin.split(",");
  63. for (var i in combin) {
  64. var str = combin[i];
  65. switch (str) {
  66. case "alpha":
  67. chars += this.alpha;
  68. break;
  69. case "smallLetter":
  70. chars += this.smallLetter;
  71. break;
  72. case "bigLetter":
  73. chars += this.bigLetter;
  74. break;
  75. case "specialChars":
  76. chars += this.specialChars;
  77. break;
  78. default:
  79. break;
  80. }
  81. }
  82. //如果长度不够,就用当前串随机出不够长度的内容补齐
  83. if (chars.length < length) {
  84. var rndStr = this.shuffle(chars.split("")).join("");
  85. chars += rndStr.substr(0, length - chars.length)
  86. }
  87. if (unique) return this.getRndUniue(chars.split(""), length).join("");
  88. return this.genRandStr(chars, length, unique).join("");
  89. },
  90. }
  91. module.exports = rand