工作中随机金额生成解决方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作中随机金额生成解决方法相关的知识,希望对你有一定的参考价值。

公司最近开发一个新的项目,有其中的一个需求就是用户输入一笔金额数目和把这笔金额分成多少笔数量,程序就是用户输入的笔数来生成每笔金额,而且要求每笔金额不能少于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%之外,这样就满足了用户的需求了。当然这个方法如果有什么漏洞,欢迎大家指教。

以上是关于工作中随机金额生成解决方法的主要内容,如果未能解决你的问题,请参考以下文章

为 JWT 生成密钥?

根据现金金额和货币列表生成变更

相邻不重复随机数的生成及优化

随机数生成方法

python随机生成中文字符的方法

在随机生成的整数列表中查找所有模式及其出现频率的最有效方法