微信红包算法MATLAB实现

上午看到基友分享的微信红包算法的文章,代码很短,春节期间红包太火了,看完就也想实现下玩玩,原代码是JAVA的,没接触过JAVA,所以看懂后改成了MATLAB的。

原文链接:微信红包随机算法初探 , 作者:陈鹏。

所写MATLAB代码如下:


% -----------------------------------

 %Test for WeChat MoneyPackageAlgrithm

 % Email:xiaolongjee@mail.nwpu.edu.cn

 % 2016.02.13 - 17:32;

% -----------------------------------

close all;

clc;

clear all;

global leftMoneyPackage

MaxTestTimes = 12; % Set as 4*x for display;

row = 4;

col = MaxTestTimes / row;

figure;

for times = 1:MaxTestTimes

    leftMoneyPackage.peoples = 35;

    leftMoneyPackage.leftmoney = 0.35;

    n = leftMoneyPackage.peoples;

    cache = zeros(n,1);

    for i = 1:n

        cache(i) = getRandomMoney();

    end

    subplot(col, row,times);

    bar(cache, 'r');

end


function money = getRandomMoney()

    global leftMoneyPackage

    if (leftMoneyPackage.peoples == 1)

        leftMoneyPackage.peoples = 0;

        money =  round(leftMoneyPackage.leftmoney * 100) / 100;

    else

        minGet = 0.01;

        maxGet = leftMoneyPackage.leftmoney /    leftMoneyPackage.peoples * 2;

        r = random('Uniform', 0, 1);

        money = r * maxGet;

        if(money < minGet)

            money = minGet;

        end

        money = floor(money * 100) / 100;

        leftMoneyPackage.peoples =    leftMoneyPackage.peoples - 1;

        leftMoneyPackage.leftmoney =    leftMoneyPackage.leftmoney - money;

    end

    end


写完做了几组测试(每组重复12次):

1.35个人瓜分0.35元,理论每人为最低值0.01,正确。

35个人瓜分0.35元

2.35个人瓜分0.36元,理论34人为最低值0.01,1人0.02,正确。

35个人瓜分0.36元

3. 35人瓜分50元,作为普通组。

35人瓜分50元

最后建了个小群实际发红包重复跑程序,数据基本能吻合,手气最佳一般在均值2倍附近。

完毕,成就感满满。

想知道具原理及各种说明的点击文章开头链接。


北一  2016.02.13

版权归作者所有,转载请注明作者、出处,其他任何形式的使用请联系我。

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

推荐阅读更多精彩内容

  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 10,097评论 0 23
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,790评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,823评论 18 399
  • 朗月疏星夜色浓,心似关山数万重。 同僚言吾身益瘦,可存烦事在胸中?
    明哥明说阅读 276评论 0 1
  • 昨晚是怎么回去的,我都不太清楚。只觉得胸口隐隐作痛,双腿如灌铅一般。一路上浑浑噩噩,身体不受控制。 我的意识就是赶...
    谈笑No1th阅读 110评论 0 0