z21victor
V2EX  ›  PHP

学习记录--微信红包

  •  
  •   z21victor · Jul 5, 2016 · 4474 views
    This topic created in 3774 days ago, the information mentioned may be changed or developed.

    好久之前写的了,太懒了。 不管水平如何都要记录一下,哎! 看了 timyang 的文章,有感而发。

    $total=20;

    $num=16;

    $min=0.01;

    for ($i=1;$i<$num;$i++){

    $n = $num-$i+1;
    
    $newTotal = ($total/$n)*2;
    
    $money = mt_rand($min*100,$newTotal*100)/100;
    
    $total = $total-$money;
    
    echo '第'.$i.'个:'.$money.' 元,剩余:'.$total.' 元 <br/>';
    

    }

    echo '第'.$num.'个:'.$total.' 元,剩余: 0 元';

    Supplement 1  ·  Jul 6, 2016
    本身大家都是猜想,都不能确定对错,除非微信公开。我这么写,是因为看到 timyang 博文中“每次拆红包时,系统取 0.01 到剩余平均值*2 之间作为红包的金额。”这句话。

    回帖中 guoer 提示:记录不是让我发帖。受教了,本来就是找个地方方便以后回看,那我就换个地方记录。

    打扰见谅!
    13 replies  •  2016-07-06 08:56:23 +08:00
    ersic
    ersic
    Jul 5, 2016
    1
    假如,一百块钱的红包十个人分,最优只能是二十呗?
    微信好像不是这样的。
    z21victor
    z21victor
    OP
    Jul 5, 2016
    2
    @ersic 随机生成,符合正态分布,但是最后一个红包会大概率大点
    madao
    madao
    Jul 5, 2016
    3
    不符合,应该是这样,假设最小可得的值为 x 人数为 n 总钱数为 a

    第一个则为 rand(a-(n*x)) 得到 r1
    第二个则为 rand(a-r1-((n-1)*x))

    这样事实上期望值是差不多的(违反直觉对吧)。
    z21victor
    z21victor
    OP
    Jul 5, 2016
    4
    @ersic 我知道你的意思了,我这边说每次的红包金额是,最大是每人可分钱的平均数乘以 2 ,最小是 0.01 。在这区间去随机。
    madao
    madao
    Jul 5, 2016
    5
    这个实际讨论很多: https://www.zhihu.com/question/22625187
    z21victor
    z21victor
    OP
    Jul 5, 2016
    6
    @madao 这个我也是猜测,可能是看了那个博文,思想被固定住了。
    crystom
    crystom
    Jul 5, 2016
    7
    我感觉应该在一条线段上随机区 N-1 个点,以切为 N 段,每段长度对应份额。
    这样比较符合微信实际情况,赢者通吃的概率很大
    guizer
    guizer
    Jul 5, 2016
    8
    我感觉应该是 (红包剩余金额-红包剩余个数*0.01 ) 在这个里面随机的
    guizer
    guizer
    Jul 5, 2016
    9
    @guizer 然后个数为 1 就取全部
    guoer
    guoer
    Jul 6, 2016
    10
    记录不是叫你发帖呀
    burn
    burn
    Jul 6, 2016
    11
    如果不设置 $newTotal = ($total/$n)*2 - $min;

    那么有可能红包分到倒数第二个就分光了 ,最后一个只能拿到 0 元
    z21victor
    z21victor
    OP
    Jul 6, 2016❤️1
    12
    @guoer 好,不能删帖,我换地方记录。见谅了
    z21victor
    z21victor
    OP
    Jul 6, 2016
    13
    @burn 我也是这么想的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1536 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 17:49 · PVG 01:49 · LAX 09:49 · JFK 12:49
    ♥ Do have faith in what you're doing.