工作中隨機金額生成解決方法
阿新 • • 發佈:2017-10-31
5% 等於 就是 其中 輸入 ... 規律 百分比 功能 公司最近開發一個新的項目,有其中的一個需求就是用戶輸入一筆金額數目和把這筆金額分成多少筆數量,程序就是用戶輸入的筆數來生成每筆金額,而且要求每筆金額不能少於10塊,其實金額從大到小排序,第一筆金額與第二筆金額相差0到20%之間即可,第二筆金額與第三筆金額也是相差0到20%之間,與此類推;例:用戶輸入500塊,輸入筆數6,就是說把500塊分成6筆,第一筆比第二筆多0到20%之間,第二筆比第三筆多0到20%之間,最後6筆加起來等於500塊。
對於這個需求,我一開始是上網百度別人案例,一時沒有找到合適的,決定自己寫。我自己就假設用戶是輸入500塊,分成6筆,假設隨機生成的差額是15%,然後就是利用高中學到的知識,等比數列的運用;設定第一筆是a1,第二筆是a2,..a6。a1+a2+...+a6=500,a2=a1+a1*0.15,a3=a2+a1*0.15,....an=a(n-1)+a(n-1)*0.15。根據這個等比數列的規律可以得出:第一筆金額是:a1*1.15^0,第二筆金額是a1*1.15^1,第三筆是a1*1.15^2...,最後一筆是a1*1.15^(n-1)。通過這樣的數據,從而推算出計算公式:a1(m^0+m^1+m^2+1+m^3+....+m^(n-1)=sum,其中a1代表第一筆金額,m表示兩個金額之間百分比差值,n表示的是筆數,sum代表的是總金額。就這樣,計算公式就出來了,然後就把數學公式轉換成代碼,寫入計算功能,就可以完成了,其中代碼編寫,我認為大部分程序員做出來是沒有問題的。
在計算過程中,可能會出現誤差,但我算過了,1000塊,分出來,算出來的誤差不超過10塊,這樣每筆的差額比只要是10%到15%之間,在這個差額比算出來的金額,再加上1塊或者減去1塊,很難會出現2筆之間的差距在0到20%之外,這樣就滿足了用戶的需求了。當然這個方法如果有什麽漏洞,歡迎大家指教。
工作中隨機金額生成解決方法