java模擬微信搶紅包的實(shí)例代碼
java簡(jiǎn)單模擬微信搶紅包功能,本例發(fā)100元紅包,有10個(gè)人搶,為了盡可能的公平,每個(gè)人的紅包金額都要隨機(jī)(保證結(jié)果的不確定性,本例搶紅包的次序與紅包金額匹配也隨機(jī)),就是不能出現(xiàn)部分紅包偏大部分偏小的情況,在區(qū)間0~100上隨機(jī)生成9個(gè)節(jié)點(diǎn),加0和100共11個(gè)節(jié)點(diǎn)按從小到大排序,各節(jié)點(diǎn)之間的差值就是紅包金額,保證了紅包金額之和等于100。
public static void main(String[] args)
{
// 發(fā)100元紅包,10人搶
// TODO Auto-generated method stub
// 發(fā)紅包總金額100元
double S = 100;
// 0-100之間9個(gè)節(jié)點(diǎn),加首尾11個(gè)點(diǎn)賦值給數(shù)組a
double[] a = new double[11];
// 第一個(gè)數(shù)是0
a[0] = 0;
// 最后一個(gè)數(shù)是100
a[a.length - 1] = S;
// 生成9個(gè)數(shù)隨機(jī)節(jié)點(diǎn)并保留兩位小數(shù)
for (int m = 1; m < a.length - 1; m++)
{
a[m] = Double.valueOf(String.format("%.2f", S * Math.random()));
}
// 冒泡排序?qū)?個(gè)點(diǎn)進(jìn)行排序
for (int i = 1; i < a.length - 2; i++)
{
for (int j = 1; j < a.length - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
double temp;
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
//紅包金額賦值給數(shù)組aa
double[] aa = new double[a.length - 1];
// 后一項(xiàng)減前一項(xiàng)的差值為紅包金額
for (int n = 0; n < a.length - 1; n++)
{
double mon = a[n + 1] - a[n];
//用自己的算法實(shí)現(xiàn)四舍五入保留兩位小數(shù)
int n1 = (int) (mon * 1000);
int c = n1 % 10;
if (c > 4)
mon = (double) ((n1 + 10) / 10) / 100;
else
mon = (double) (n1 / 10) / 100;
aa[n] = mon;
}
//列表打亂數(shù)組aa中的順序,實(shí)現(xiàn)搶紅包的次序與紅包金額匹配隨機(jī)
List<Double> list = new ArrayList<>();
for(int i = 0; i < aa.length; i++)
{
list.add(aa[i]);
}
Collections.shuffle(list);
for(double i:list)
System.out.println(i);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring boot actuator端點(diǎn)啟用和暴露操作
這篇文章主要介紹了Spring boot actuator端點(diǎn)啟用和暴露操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
基于ChatGPT+SpringBoot實(shí)現(xiàn)智能聊天AI機(jī)器人接口并上線至服務(wù)器的方法
ChatGPT是一款基于自然語(yǔ)言處理技術(shù)的聊天機(jī)器人,ChatGPT可以模擬真實(shí)的人類對(duì)話,并能夠更貼近用戶的需求,提供更有價(jià)值的服務(wù),這篇文章主要介紹了基于ChatGPT+SpringBoot實(shí)現(xiàn)智能聊天AI機(jī)器人接口并上線至服務(wù)器,需要的朋友可以參考下2023-02-02
SpringBoot實(shí)現(xiàn)郵件推送的詳細(xì)代碼
在項(xiàng)目中經(jīng)常會(huì)遇到SpringBoot推送消息的業(yè)務(wù),除了站內(nèi)推送通知,郵件推送也是一種常見的方式,本文小編就帶大家實(shí)現(xiàn)郵件推送,文中有詳細(xì)代碼講解,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-04-04
IDEA Maven源修改為國(guó)內(nèi)阿里云鏡像的正確方式
為了加快 Maven 依賴的下載速度,可以將 Maven 的中央倉(cāng)庫(kù)源修改為國(guó)內(nèi)的鏡像,比如阿里云鏡像,以下是如何在 IntelliJ IDEA 中將 Maven 源修改為阿里云鏡像的詳細(xì)步驟,感興趣的同學(xué)可以參考閱讀一下2024-09-09
Java-文件File簡(jiǎn)單實(shí)用方法(分享)
下面小編就為大家?guī)?lái)一篇Java-文件File簡(jiǎn)單實(shí)用方法(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-08-08

