18软工实践-团队现场编程实战(抽奖系统)

目录

  • 组员职责分工
  • github 的提交日志截图
  • 程序运行截图
  • 程序运行环境
  • GUI界面
  • 基础功能实现
  • 运行视频
    • LCG算法
    • 过滤(降权)算法
      • 算法思路
    • 红黑树
  • 附加功能一
    • 背景
    • 实现
  • 附加功能二(迭代中)
  • 附加功能三
    • 背景
    • 引言
    • 解决方法
    • 实现效果
    • 效果截图
  • 遇到的困难及解决方法
    • 组员:胡绪佩
    • 组员:庄卉
    • 组员:周政演
    • 组员:刘一好
    • 组员:翟丹丹
    • 组员:刘恺琳
    • 组员:青元
    • 组员:葛家灿
    • 组员:何家伟
    • 组员:黄鸿杰
    • 组员:何宇恒
  • 马后炮
    • 组员:胡绪佩
    • 组员:何家伟
    • 组员:周政演
    • 组员:翟丹丹
    • 组员:刘一好
    • 组员:刘恺琳
    • 组员:青元
    • 组员:庄卉
    • 组员:何宇恒
    • 组员:黄鸿杰
    • 组员:葛家灿
  • 贡献分评估
  • PSP表格
  • 学习进度表

组员职责分工

组员 职责
绪佩 组织分工、改进前端、后端、云化
庄卉 改进前端、后端
家伟 算法关键词识别、附加题实现
家灿 数据库
一好 算法随机数、算法审查
鸿杰 算法随机数、算法审查
政演 提供算法思路、附加题idea思路、博客撰写
凯琳 前端审查
丹丹 前端审查
青元 前端改进
宇恒 前端审查

github 的提交日志截图

github地址

抽奖结果名单

抽奖规则设定1

抽奖结果名单

发布成功显示

从该式可以看出,该算法由于构成简单,具有以下优点:

  • 计算速度快
  • 易于实现
  • 易于写入硬件

以下是针对不同参数 lcg 产生随机数的效果图

根据我们机器的情况,我们选择使用参数:

过滤(降权)算法

算法思路

抽奖算法对两种情况进行了处理:

无发言剔除:当用户只转发抽奖关键字,而没有相关发言时,直接剔出抽奖名单。

恶意刷屏:抽奖者可以自行定义一个抽奖阈值φ1,当发言数超过φ1时,对该用户进行中奖概率降权处理。

灌水剔除:抽奖者可以自行定义一个抽奖阈值φ2,发送的表情数超过阈值的时候,判定为灌水,剔出抽奖名单

红黑树

实现效果

此处仅仅对该功能进行测试,由于样本数据不足,设定的阈值也较小,将黑名单的内容输出到文件中可以显示如下内容:

设计考量

测量值偏大:使用哈希的方法会产生冲突,多个数据哈希到同一个桶内,那么这个桶的计数值就会偏大。

  1. 为什么允许有误差:在大量数据条件下,若把所有信息都准确地记录下来,要消耗大量计算和空间开销,无法满足实时性;而且在很多情况下,并不需要非常精确的数据,在一定程度上可靠的估计值,便足以满足需求。

  2. 为什么要设置多个哈希函数:如果只设置一个哈希函数,多个流数据存入同一个桶,误差就会很大。通过设计多个哈希函数,减少哈希值的冲突,以减少误差。每个流都要经过所有哈希函数的处理,存入不同的计数器中。计数器的最小值虽然还是大于等于真实值,但最接近真实值。这也是 “ Count-Min ”的由来。

  3. 哈希函数个数:哈希函数越多,冲突越少,测量值越精确,但计算开销大。需要权衡测量精度和准确度,来设置合适

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月16日
下一篇 2018年10月16日

相关推荐