PHP微信红包拼手气算法与扫雷

如下需求
需要将1元的红包,拆分成10个,每一个红包的金额均不相等,接受用户的输入 个数和金额,并且红包个数的最小金额,和最大金额不能大于输入金额。

代码实现如下

/**
     * 获取随机红包(符合正态分布)
     * @param float $min 红包最小值
     * @param float $max 红包最大值
     * @param integer $num 红包个数
     * @param float $total 红包金额
     * @return array
     */
    function rand_red($min,$max,$num,$total){

        $data = [];
        if ($min * $num > $total) {
            return [];
        }
        if($max*$num < $total){
            return [];
        }
        while ($num >= 1) {
            $num--;
            $kmix = max($min, $total - $num * $max);
            $kmax = min($max, $total - $num * $min);
            $kAvg = $total / ($num + 1);
            //获取最大值和最小值的距离之间的最小值
            $kDis = min($kAvg - $kmix, $kmax - $kAvg);
            //获取0到1之间的随机数与距离最小值相乘得出浮动区间,这使得浮动区间不会超出范围
            $r = ((float)(rand(1, 10000) / 10000) - 0.5) * $kDis * 2;
            $k = sprintf("%.2f", $kAvg + $r);
            $total -= $k;
            $data[] = $k;
        }
        return $data;
    }

    $data = rand_red(0.01,0.5,10,1);
    var_dump($data);
    //输出红包总额
    echo array_sum($data);

由于微信红包的火热,一些红包爱好者就出现了红包扫雷的菠菜玩法,有群红包、H5游戏,可以是手气佳者、也可以是尾数符合者,玩法多种多样。

而一般脱离微信外的程序、游戏、网页、APP、都是差不多跟机器人在玩,前期让你赚钱,后期慢慢割你韭菜,和币圈合约是一个道理。

后期会持续更新和剖析扫雷红包机器人和其通过盈亏比例调节割韭菜等细节

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,620评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,336评论 1 3
  • 没事就多看看书,因为腹有诗书气自华,读书万卷始通神。没事就多出去旅游,别因为没钱而找借口,因为只要你省吃俭用,来...
    向阳之心阅读 4,836评论 3 11
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,264评论 2 7