数学在优惠券上的应用(编程篇)
IPFS
之前分享了数学在优惠券上的应用, 怎么利用数学找出优惠券上的规律,并且利用规律生成新的可用的优惠代码。
前文规律回顾:
某家的优惠码基本是这个规律:47000RRRRRCODEZ
- RRRRR:代表随机号码,比如12345
- CODE:4位 code,这是最主要的号码,每个相同类别的折扣码都会有相同的 code。
- Z:最后的一位号码叫check sum,就是检查之前号码的总和。可以通过以下公式获得: 10 -((总数(单数位+ 偶数位x3))%10)
通过上面的规则,可以看出如果知道CODE,就只需要算出check sum就可以获得一个完整的优惠代码。
下面我们就写个小程序完成自动生成新的优惠代码这个步骤吧。
这是PHP版本:
function couponGenerator($data) {
//47000+5位随机数字+CODE
$data="47000"."".rand(10000,99999)."".$data;
//前面的数字加上check sum
$data=$data."".addchecksum($data);
return $data;
}
//checksum的算法
//10 -((总数(单数位+ 偶数位x3))%10)
function addchecksum($data){
$checksum=0;
for ($x = 0; $x < 14; $x++) {
//如果是单位数
if($x%2==0){
$checksum+=intval($data[$x]);
}
//如果是双位数
else{
$checksum+=intval($data[$x])*3;
}
}
return "".((10-$checksum%10)%10);
}
Python 版本:
def addchecksum(stuff):
checkdigit = 0
for j in range(14):
if j % 2 == 0:
checkdigit += int(stuff[j])
else:
checkdigit += int(stuff[j]) * 3
print(str(stuff) ) + str((10 -(checkdigit % 10))%10)
def coupon_generator(price):
for j in range(100):
i = randint(0, 99999)
addchecksum("47000" + "%05d" % i)
非常简单的小程序。很多程序代码不难写,难写的是思路,只要理清一下思路,代码想怎么写就可以怎么写。
好了,代码完成了。十几行代码可能省去很多精力算出新的优惠码~
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!

- 来自作者
- 相关推荐