免费邀请码更改用户名领国庆勋章CRC32解密2.0回帖奖励召回投票记录删除领夜猫子帮助中心 本站已运行
查看: 176|回复: 2
收起左侧

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

[复制链接]
发表于 2018-10-22 10:26:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?加入我们

x
本帖最后由 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从币 +66 收起 理由
Cute + 66 山寨

查看全部评分

相关帖子

回复

使用道具 举报

腾讯云新春采购节 热门云产品3折起,爆款超值秒杀,新购高额满返,升级享优惠大礼包!
发表于 2018-10-22 15:26:53 | 显示全部楼层
还真有这么整的
回复 支持 反对

使用道具 举报

发表于 2018-10-22 22:38:59 | 显示全部楼层
本帖最后由 Cute 于 2018-10-22 22:41 编辑

这个绝了,转帖加上这玩意,绝对分不清是谁先转的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则