• JS生成随机数


    生成随机字符串

    方法一:生成随机数转成 36 进制,再截取部分

    36表示36进制(包含数字[10个]、字母[26个])

    const randomStr = Math.random().toString(36).substring(2);

    方法二:

    console.log(this.randomStr(5));

    1. /** 生成随机字符串
    2. * @param len 随机字符串长度,默认32位
    3. * @returns {string} 随机字符串
    4. */
    5. randomStr(len = 32) {
    6. let t = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890";
    7. let val = "";
    8. for (let i = 0; i < len; i++) {
    9. val += t.charAt(Math.floor(Math.random() * t.length));
    10. }
    11. return val;
    12. }

    生成不重复的随机数

    1. /** 生成不重复的随机数
    2. * @param {Object} extent.需要的随机数个数
    3. * @param {Object} range.随机数范围(从 0 ~ range-1 中随机选取)
    4. */
    5. function createRandomNum(extent, range) {
    6. let randomArr = []; // 生成的随机数组
    7. while (randomArr.length < extent) {
    8. const num = Math.floor(Math.random() * range);
    9. if (randomArr.indexOf(num) === -1) randomArr.push(num);
    10. }
    11. console.log('randomArr', randomArr);
    12. console.log('未排序:' + randomArr.join(',') + '\n' + '已排序:' + randomArr.sort().join(','));
    13. }

    生成指定范围内的随机数(包含最大值和最小值)

    1. /** 生成指定范围内的随机数(包含最大值和最小值)
    2. * @param {Object} min.范围内最小值
    3. * @param {Object} max.范围内最大值
    4. */
    5. function assignRandomMinMaxInclude(min, max) {
    6. const range = max - min;
    7. const rand = Math.random();
    8. const num = min + Math.round(rand * range); // 四舍五入
    9. console.log(num);
    10. }

    生成指定范围内的随机数(包含最小值)

    1. /** 生成指定范围内的随机数(包含最小值)
    2. * @param {Object} min.范围内最小值
    3. * @param {Object} max.范围内最大值
    4. */
    5. function assignRandomMinInclude(min, max) {
    6. const range = max - min;
    7. const rand = Math.random();
    8. const num = min + Math.floor(rand * range); // 舍去
    9. console.log(num);
    10. }

    生成指定范围内的随机数(包含最大值)

    1. /** 生成指定范围内的随机数(包含最大值)
    2. * @param {Object} min.范围内最小值
    3. * @param {Object} max.范围内最大值
    4. */
    5. function assignRandomMaxInclude(min, max) {
    6. const range = max - min;
    7. const rand = Math.random();
    8. if (Math.round(rand * range) === 0) {
    9. return min + 1;
    10. }
    11. const num = min + Math.round(rand * range);
    12. console.log(num);
    13. }

    生成指定范围内的随机数(不包含范围值)

    1. /** 生成指定范围内的随机数(不包含范围值)
    2. * @param {Object} min.范围内最小值
    3. * @param {Object} max.范围内最大值
    4. */
    5. function assignRandomNotInclude(min, max) {
    6. const range = max - min;
    7. const rand = Math.random();
    8. let val = 0;
    9. if (Math.round(rand * range) === 0 || Math.round(rand * range) === 1) {
    10. val = min + 1;
    11. } else if (Math.round(rand * max) === max) {
    12. val = max - 1;
    13. } else {
    14. val = min + Math.round(rand * range) - 1;
    15. }
    16. console.log(val);
    17. }

    完整代码

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>JS生成随机数</title>
    6. <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    7. </head>
    8. <body>
    9. <div style="margin-top: 30px">
    10. <button onclick="createRandomNum(20, 20)">生成不重复的随机数 [20位,0~19的随机数]</button>
    11. <div id="noRepeat" style="margin-top: 10px"></div>
    12. </div>
    13. <div style="margin-top: 30px">
    14. <button onclick="assignRandomMinMaxInclude(10, 19)">生成指定范围内的随机数(包含最大值和最小值) [范围值为10~19之内]</button>
    15. <div id="rangeValidator1" style="margin-top: 10px"></div>
    16. </div>
    17. <div style="margin-top: 30px">
    18. <button onclick="assignRandomMinInclude(10, 19)">生成指定范围内的随机数(包含最小值) [范围值为10~19之内]</button>
    19. <div id="rangeValidator2" style="margin-top: 10px"></div>
    20. </div>
    21. <div style="margin-top: 30px">
    22. <button onclick="assignRandomMaxInclude(10, 19)">生成指定范围内的随机数(包含最大值) [范围值为10~19之内]</button>
    23. <div id="rangeValidator3" style="margin-top: 10px"></div>
    24. </div>
    25. <div style="margin-top: 30px">
    26. <button onclick="assignRandomNotInclude(10, 19)">生成指定范围内的随机数(不包含范围值) [范围值为10~19之内]</button>
    27. <div id="rangeValidator4" style="margin-top: 10px"></div>
    28. </div>
    29. <script type="text/javascript">
    30. /** 生成不重复的随机数
    31. * @param {Object} extent.需要的随机数个数
    32. * @param {Object} range.随机数范围(从 0 ~ range-1 中随机选取)
    33. */
    34. function createRandomNum(extent, range) {
    35. let randomArr = []; // 生成的随机数组
    36. while (randomArr.length < extent) {
    37. const num = Math.floor(Math.random() * range);
    38. if (randomArr.indexOf(num) === -1) randomArr.push(num);
    39. }
    40. console.log('randomArr', randomArr);
    41. $('#noRepeat').html('未排序:' + randomArr.join(',') + '
      '
      + '已排序:' + randomArr.sort().join(','));
    42. }
    43. /** 生成指定范围内的随机数(包含最大值和最小值)
    44. * @param {Object} min.范围内最小值
    45. * @param {Object} max.范围内最大值
    46. */
    47. function assignRandomMinMaxInclude(min, max) {
    48. const range = max - min;
    49. const rand = Math.random();
    50. const num = min + Math.round(rand * range); // 四舍五入
    51. console.log(num);
    52. $('#rangeValidator1').html('随机值:' + num);
    53. }
    54. /** 生成指定范围内的随机数(包含最小值)
    55. * @param {Object} min.范围内最小值
    56. * @param {Object} max.范围内最大值
    57. */
    58. function assignRandomMinInclude(min, max) {
    59. const range = max - min;
    60. const rand = Math.random();
    61. const num = min + Math.floor(rand * range); // 舍去
    62. console.log(num);
    63. $('#rangeValidator2').html('随机值:' + num);
    64. }
    65. /** 生成指定范围内的随机数(包含最大值)
    66. * @param {Object} min.范围内最小值
    67. * @param {Object} max.范围内最大值
    68. */
    69. function assignRandomMaxInclude(min, max) {
    70. const range = max - min;
    71. const rand = Math.random();
    72. if (Math.round(rand * range) === 0) {
    73. return min + 1;
    74. }
    75. const num = min + Math.round(rand * range);
    76. console.log(num);
    77. $('#rangeValidator3').html('随机值:' + num);
    78. }
    79. /** 生成指定范围内的随机数(不包含范围值)
    80. * @param {Object} min.范围内最小值
    81. * @param {Object} max.范围内最大值
    82. */
    83. function assignRandomNotInclude(min, max) {
    84. const range = max - min;
    85. const rand = Math.random();
    86. let val = 0;
    87. if (Math.round(rand * range) === 0 || Math.round(rand * range) === 1) {
    88. val = min + 1;
    89. } else if (Math.round(rand * max) === max) {
    90. val = max - 1;
    91. } else {
    92. val = min + Math.round(rand * range) - 1;
    93. }
    94. console.log('val=', val);
    95. $('#rangeValidator4').html('随机值:' + val);
    96. }
    97. </script>
    98. </body>
    99. </html>
  • 相关阅读:
    【文件终结者 Objective-C语言】
    我裂开 求助15题答案--我不会哭死
    为什么u盘在mac上显示不出来
    弘玑RPA x 流程挖掘,构筑超自动化的坚实底座
    C#获取枚举Enum的描述
    (1)多线程-线程的创建
    爆火的治愈系插画工具又来了,额度居然有18w,根本花不完?
    代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素
    React-native Android 添加音效
    vue手写提示组件弹窗
  • 原文地址:https://blog.csdn.net/AdminGuan/article/details/126412964