设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 3658|回复: 2
收起左侧

基于红包算法生成指定范围的随机日期时间型数组 并指定生成数量与概率清理范围时间

[复制链接]
发表于 2018-10-22 10:26:24 | 显示全部楼层 |阅读模式
本帖最后由 QAQ 于 2018-10-22 10:32 编辑

  1. .版本 2
  2. .支持库 spec

  3. .程序集 程序集1

  4. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


  5. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  6. 返回 (0)  ' 可以根据您的需要返回任意数值

  7. .子程序 _临时子程序
  8. .局部变量 日期表, 日期时间型, , "0"

  9. ' 算法可用作以下用途:后台批量发帖回帖或添加用户等,并使用该算法生成的日期时间以达到以假乱真的效果。
  10. 置随机数种子 ()
  11. 生成随机日期_红包算法 ([2018年1月1日], [2018年1月31日], 100, 日期表, 假)

  12. 概率清理_范围时间 ([2000年1月1日1时], [2000年1月1日4时], 日期表, 90)
  13. 调试输出 (日期表)

  14. .子程序 生成随机日期_红包算法, 逻辑型, 公开, 基于红包算法的随机日期时间数组生成器
  15. .参数 起始日期, 日期时间型, , 指定随机日期的起始日期
  16. .参数 终止日期, 日期时间型, , 终止日期不能小于起始日期
  17. .参数 生成数量, 整数型, , 指定需要生成多少个日期,不能小于3
  18. .参数 日期表, 日期时间型, 数组, 生成的日期表将通过数组传出
  19. .参数 包含起始日期, 逻辑型, 参考 可空, 日期表第1成员是否为起始日期
  20. .局部变量 总间隔, 整数型
  21. .局部变量 当前时间, 日期时间型
  22. .局部变量 计数, 整数型
  23. .局部变量 间隔, 整数型
  24. .局部变量 日期, 日期时间型

  25. 总间隔 = 取时间间隔 (终止日期, 起始日期, 8)
  26. .如果真 (总间隔 ≤ 0 或 生成数量 ≤ 2)
  27.     返回 (假)
  28. .如果真结束
  29. 重定义数组 (日期表, 假, 生成数量)
  30. 日期 = 起始日期
  31. .计次循环首 (生成数量 - 1, 计数)
  32.     间隔 = 取随机整数 (1, (总间隔 - (生成数量 - 计数)) ÷ (生成数量 - 计数))
  33.     总间隔 = 总间隔 - 间隔
  34.     .如果 (包含起始日期)
  35.         日期表 [计数] = 日期
  36.         日期 = 增减时间 (日期, 8, 间隔)
  37.     .否则
  38.         日期 = 增减时间 (日期, 8, 间隔)
  39.         日期表 [计数] = 日期
  40.     .如果结束

  41. .计次循环尾 ()
  42. 日期 = 增减时间 (日期, 8, 总间隔)
  43. 日期表 [计数] = 日期
  44. 返回 (真)

  45. .子程序 取随机整数, 整数型, , 解决易语言取随机数不超过32767的bug
  46. .参数 最小值, 整数型, , 不能为负数
  47. .参数 最大值, 整数型, , 必须大于最小值否则会出错
  48. .局部变量 随机数, 整数型
  49. .局部变量 字节集, 字节集

  50. 字节集 = 取空白字节集 (4)
  51. 字节集 [1] = 取随机数 (, )
  52. 字节集 [2] = 取随机数 (, )
  53. 字节集 [3] = 取随机数 (, )
  54. 字节集 [4] = 取随机数 (0, 127)

  55. 随机数 = 取字节集数据 (字节集, 3, 1)

  56. 返回 (随机数 % (最大值 - 最小值 + 1) + 最小值)


  57. .子程序 概率清理_范围时间, 逻辑型, 公开, 日期时间型数组中按照指定概率删除指定时间范围的成员
  58. .参数 起始时间, 日期时间型, , 指定开始的起始时间,年月日部分将会被舍弃
  59. .参数 终止时间, 日期时间型, , 必须大于起始时间,不支持跨日否则会出错
  60. .参数 日期表, 日期时间型, 数组, 指定要进行概率清理的日期表
  61. .参数 保留概率, 字节型, , 范围1~100
  62. .局部变量 有效清理表, 逻辑型, , "0"
  63. .局部变量 计数, 整数型
  64. .局部变量 总数, 整数型
  65. .局部变量 时间部分, 日期时间型
  66. .局部变量 需要清理, 逻辑型
  67. .局部变量 位置, 整数型

  68. 总数 = 取数组成员数 (日期表)
  69. .如果真 (保留概率 > 100 或 保留概率 = 0 或 总数 = 0)
  70.     返回 (假)
  71. .如果真结束
  72. 起始时间 = 取时间 (起始时间)
  73. 终止时间 = 取时间 (终止时间)
  74. .如果真 (取时间间隔 (终止时间, 起始时间, 8) ≤ 0)
  75.     返回 (假)
  76. .如果真结束
  77. 重定义数组 (有效清理表, 假, 总数)
  78. .计次循环首 (总数, 计数)
  79.     时间部分 = 取时间 (日期表 [计数])
  80.     .如果真 (时间部分 ≥ 起始时间 且 时间部分 ≤ 终止时间)
  81.         有效清理表 [计数] = 真
  82.         需要清理 = 真
  83.     .如果真结束

  84. .计次循环尾 ()
  85. .如果真 (需要清理)
  86.     .计次循环首 (总数, 计数)
  87.         .如果真 (有效清理表 [计数] 且 取随机数 (1, 100) ≤ 保留概率)
  88.             日期表 [计数] = [100年1月1日]
  89.         .如果真结束

  90.     .计次循环尾 ()
  91.     .判断循环首 (真)
  92.         位置 = 寻找时间 (日期表, [100年1月1日])
  93.         .如果真 (位置 = 0)
  94.             跳出循环 ()
  95.         .如果真结束
  96.         删除成员 (日期表, 位置, 1)
  97.     .判断循环尾 ()
  98. .如果真结束
  99. 返回 (真)


  100. .子程序 寻找时间, 整数型, , 找到返回位置,否则返回0
  101. .参数 日期表, 日期时间型, 数组
  102. .参数 日期, 日期时间型
  103. .局部变量 计数, 整数型

  104. .计次循环首 (取数组成员数 (日期表), 计数)
  105.     .如果真 (日期表 [计数] = 日期)
  106.         返回 (计数)
  107.     .如果真结束

  108. .计次循环尾 ()
  109. 返回 (0)

复制代码

评分

1

查看全部评分

相关帖子

发表于 2018-10-22 15:26:53 | 显示全部楼层
还真有这么整的
发表于 2018-10-22 22:38:59 | 显示全部楼层
本帖最后由 Cute 于 2018-10-22 22:41 编辑

这个绝了,转帖加上这玩意,绝对分不清是谁先转的。
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-17 02:02 , Processed in 0.462026 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表