您的位置:首页 > 移动开发 > 微信开发

浅谈最近的扣扣、微信抢红包背后的故事

2015-02-15 19:10 225 查看
今天在微信公众号“Java那点事”里发现了这个算法,感觉挺有意思就拿来玩玩。

首当其冲的我必须先说下此次抢红包背后算法中用到的 mt_rand()函数的含义及用法:

语法:mt_rand(min,max)

说明:如果没有提供可选参数min 和max,mt_rand()返回0到rand_max之间的伪随机数,例如想要1到100(包括1和100)之间的随机数,用mt_rand(1,100).

好了,mt_rand()函数的含义和用法已经了解了,那就切入正题开始代码了。

double total=10000; //红包金额总数

int num=100; //红包总数

double money; //个人得到红包里的金额

double safe_total=50; //只要红包没抢完,每人至少可以获得的钱数

System.out.println("开始抢红包喽!");

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

money=Math.random()*(total-(num-i)*safe_total)/(num-i)+safe_total;

total=total-money;

System.out.println("第"+i+"个人所抢到的红包钱为:"+money+" 剩余金额为:"+total);

if(total<=0){

System.out.println("红包已抢完,请等下次喽!");

break;

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: