商品砍价之我见——浅显的分析砍价逻辑

分享 未结
1 353
温良枭生
温良枭生 2019-05-08
工作中接触到了商品砍价业务,也查询了一些资料了解砍价算法或者逻辑。公司用到的砍价算法是公司开发人员自己写的,其实原理都是大同小异。 砍价逻辑 用户发起砍价,然后分享给其他人让其帮砍,其他用户帮砍前提是已注册平台账号或者微信授权登录(其实这也无形之中增加了会员数),已帮砍的用户不能再次帮砍,发起砍价的用户自己不能帮自己砍。 帮砍用户的砍价金额分两种情况:新用户金额是随机的(小于当前商品价格),老用户金额是固定的(如老用户固定只能帮砍1块钱)。 帮砍次数也就是砍几刀是固定的(具体怎么确定砍几刀这个临界值我也不知道),允许在这几刀里将价格砍至0元,当砍至0元时这件商品的砍价活动就结束,发起者就可以支付下单。 这里逻辑里我认为难点是帮砍随机金额的获得。我们公司用的方式如下: 随机金额 = 当前金额 ÷(总共的刀数-已经帮砍刀数)× 系数 当前金额:商品已经砍到了多少钱了,如¥49.00的砍了3刀砍成了¥28.6,那么¥28.6就是当前金额。 总共的刀数:就是前面说的固定可以砍几次,但也许是不固定的,我猜可能跟商品价格有一定关系,比如价越高砍得刀数越多,并且每次帮砍金额就越大。具体怎么个算法目前还没有了解(如果你知道我们可以交流学习一下,非常感谢)。 已经帮砍刀数:就是已经砍了几刀了, 系数:这个系数是一个介于0~1之间的随机小数,它其实决定了新用户的帮砍金额尽量是随机的并且小于等于当前金额。 大致逻辑就是这样。实际项目中有一些问题要注意: 1、如果是最后一刀,就直接返回当前金额,也就是最后一刀直接砍完为0元。 2、如果有新老用户区别,那老用户的固定金额要考虑到与当前金额的大小关系,比如当前金额为0.5元,这时老用户固定可以砍1元,就会出现砍为-0.5元的情况,这种情况就不符合业务逻辑,就完犊子了! 3、随机金额的获取,公司中用了一种方法可以分享一下(有什么缺陷希望指正): [pre] $randPrice = priceCalculate($endPrice, '/', $knife-$bargain_user_num); $randScore = priceCalculate(mt_rand() / mt_getrandmax(),'+','0.5'); $ePrice = priceCalculate( $randScore ,'*', $randPrice ); [/pre] (priceCalculate是封装的高精度价格计算方法) $randScore就是随机系数,同事用的原理是mt_rand()一个随机数,然后用这个随机数/(mt_getrandmax()随机数的最大可能值 + 一个常数),这样是保证这个系数就与0~1之间。 (如果有什么想法或者认为文章有错误的地方希望加微信交流一下:zlpj0417)
回帖
黄金赞助商
关注公众号

关注公众号,随时随地交流技术