一、方案1:即開即中,考慮機會均等,減少金額差較大的機率
可以每次點選時候,隨機產生
static double getrandommoney(double money, int n)
; for (int i = 0; i < n; i++)
return array;
} //程式設計客棧/
/// 即開即中,考慮機會均等,減少金額差較大的機率
/// 隨機產生,額度在0.01和剩餘平均值*2之間
///
///
static double getrandommoney(redpackage redpackage)
//隨機生成
random ran = new random();
double min = 0.01;
do程式設計客棧uble max = redpackage.money / redpackage.count * 2;
double money = ran.nextdouble() * max;
money = money <= min ? 0.01 : money;
money = convert.toint32(money * 100) / 100.00;
redpackage.count--;
redpackage.money -= money;
return money;
} public class redpackage
生成5組隨機結果如下:
二、方案2: 一次性拆分紅包,不考慮機會平等性
///
/// 一次性拆分紅包,不考慮機會平等性
/// 最小單位1 分
///
static double diviedone(double money, int n)
//最後一分錢,補到第乙個陣列
if (fen > 0)
return array.select(q => q / 100.0).toarray();
}生成5組隨機結果如下:
本文標題: c#實現拼手氣紅包演算法
本文位址:
發手氣紅包演算法
lowest 0.01元,最小金額 操作是整數,最小人民幣單位是分,所以有2位小數,最少是0.01元 發金額totalbill 發n人,就取1到100的隨機數n個 為了提高精度,把金額放大100倍 totalamount totalbill 100 n個人各取的隨機數累加得到總份量,用總發紅金額to...
C語言實現搶紅包演算法
1 演算法背景 大家知道,微信拼手氣紅包和普通紅包兩種。普通紅包每個人搶到的金額是固定的 總額的平均數 拼手氣紅包是隨機金額 每個人搶到的是隨機的,差別可能非常大,有的人搶到的是1分,有的搶到的可能是幾元 十幾元 幾十元 目前的搶紅包演算法只能輸入兩個引數,即總金額 總人數。2 演算法要求 現要求同...
如何實現搶紅包演算法?
方法一 二倍均值法 public static listdivideredpackage integer totalamount,integer totalpeoplenum amountlist.add restamount return amountlist 缺陷 除了最後一次,任何一次搶到的金...