matlab 发微信,微信红包算法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');

endfunction 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,正确。

082a53d8f6ef

35个人瓜分0.35元

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

082a53d8f6ef

35个人瓜分0.36元

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

082a53d8f6ef

35人瓜分50元

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

完毕,成就感满满。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值