Java抢红包代码太绝了!100元10人随机分,公平到哭

Java抢红包代码太绝了!100元10人随机分,公平到哭

java模拟微信抢红包的实例代码

对于Java简单模拟微信抢红包这段功能描述而言, 在此次示例中设定发放100元红包, 参与抢红包的人数为10人, 为最大限度保障公平, 红包金额需要进行随机设定, 以确保最后的结果具备不确定性, 而且在这个例子里抢红包的先后次序以及红包金额的匹配同样是随机的, 即绝对不可以出现部分红包金额过大而部分红包金额过小的状况, 要在区间0到100这个范围上随机生成9个节点, 再加上0以及100这两个数从而一共生成11个节点, 而后将这11个节点按照从小到大的顺序进行排列, 各个节点之间的差值就是每个红包的金额, 如此这般便可保证所有的红包金额总和等于100。

void main(

args)

// 发100元红包,10人抢

// TODO Auto- stub

// 发红包总金额100元

S = 100;

// 0-100之间9个节点,加首尾11个点赋值给数组a

a = new

11

// 第一个数是0

= 0;

// 最后一个数是100

a. - 1

= S;

// 生成9个数随机节点并保留两位小数

= .(.("%.2f", S * Math.()));

// 冒泡排序对9个点进行排序

初始化整型变量j为1, 当j小于a减去1再减去i时, 执行循环体, 每次循环结束后变量j值自增。

if (a

> a

j + 1

temp;

temp = a

= a

j + 1

j + 1

= temp;

//红包金额赋值给数组aa

aa = new

a. - 1

// 后一项减前一项的差值为红包金额

针对于整型变量n, 将其初始化为0, 当n小于a的值减1时, 执行n自增1的操作。

mon = a n + 1 - a

//用自己的算法实现四舍五入保留两位小数

int n1 = (int) (mon * 1000); int c = n1 % 10; if (c > 4) else mon = () (n1 / 10) / 100; aa = mon;

通过列表来打乱数组aa里的顺序, 达成抢红包的次序跟红包金额相匹配的随机状态。

List list = new (); for(int i = 0; i < aa.; i++) list.add(aa ); .(list); for( i:list) .out.(i);