C語言實現搶紅包演算法

2022-09-25 06:51:15 字數 1654 閱讀 8989

1、演算法背景:

大家知道,微信拼手氣紅包和普通紅包兩種。普通紅包每個人搶到的金額是固定的(總額的平均數),拼手氣紅包是隨機金額(每個人搶到的是隨機的,差別可能非常大,有的人搶到的是1分,有的搶到的可能是幾元、十幾元、幾十元),目前的搶紅包演算法只能輸入兩個引數,即總金額、總人數。

2、演算法要求:

現要求同學們設計乙個改進的搶紅包演算法,可以設定總金額(total)、總人數(num)、搶到的最低金額(min)和最高金額(max),這樣就可以控制每個搶紅包的,搶到的不會太少,也不會太多。

(1)先用自然語言給出演算法設計的思想:

第一步:輸入紅包金額總金額,紅包個數,紅包金額最低/最高額度。

第二步:判斷帶輸入資料是否滿足演算法要求,不滿足輸出提示資訊,並重新輸入資料。

第三步:生成乙個隨時紅包金額

第四步:判斷紅包金額是否滿足條件,如果滿足,繼續生成下乙個紅包金額,如果不滿足在

此生成新的隨機紅包金額,知道滿足條件。

第五步:輸出搶紅包的過程資訊

(2)進行異常檢查與處理;

(3)給出c語言源**實現,執行結果展示;

源**如下

#include

#include

#include

void input();

int range_random_price(int start_price, int end_price);

void redpackets(double total, int num, double min_price, double max_price);

int maxx = 0, maxx_index = -1;

int main()

// 資料輸入

void i

// 生成(a, b) 之間的隨機數

int range_random_price(int start_price, int end_price)

// total :總金額(元) num:人的個數 min_price max_price :最低/最高金額

void redpackets(double total, int num, double min_price, double max_price)

printf("搶紅包結果如下:\n");

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

if(maxx < random_price)

maxx = random_price, maxx_index = i;

total -= random_price;// 剩餘金額

printf("第 %d 個人搶到的紅包金額為 %.2f, 紅包剩餘金額為 %.2f\n", i, (double)(random_price/100.0), (double)(total/100.0));

} if(maxx < total)

maxx = total, maxx_index = num;

// 輸出最後乙個人的紅包金額

printf("第 %d 個人搶到的紅包金額為 %.2f, 紅包剩餘金額為 0.00\n", num, (double)(total/100.0));

printf("運氣王是 %d 號\n", maxx_index);

}程式執行結果:

本文標題: c語言實現搶紅包演算法

本文位址:

如何實現搶紅包演算法?

方法一 二倍均值法 public static listdivideredpackage integer totalamount,integer totalpeoplenum amountlist.add restamount return amountlist 缺陷 除了最後一次,任何一次搶到的金...

微信搶紅包演算法實現

只討論金額隨機的情況,需要滿足規則 所有人搶到金額之和要等於紅包總金額1.每個人至少搶到一分錢1.要保證所有人搶到金額的機率相等方案一 每個人點進來領,金額隨機,隨機的上限是當前剩餘的紅包金額。每次搶到的金額 隨機區間 0,剩餘紅包金額 分析 這樣做的缺陷是越早領越有優勢,因為每次搶到的金額 隨機區...

Accessibility 實現搶紅包 一

好了。不想說那麼多廢話了。直接開始吧 進入正題!我英語不好,將就看吧。配置許可權 註冊你的accessinilityservice 這一步沒什麼要說的,注意許可權和meta data的配置 配置accessibility info accessibilityeventtypes 監聽的事件。acce...