# 话不多说,直接看代码.可以根据需求调整区间
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82/** * @param $amount 商品总金额 * @param $ndu 需要人次 * @param $surplus_amount 剩余金额 * @param $count_joiner 参与人次 * @return array */ function cutAKnife($amount , $ndu , $surplus_amount , $count_joiner){ // 10个人 第五刀出现负数 // 30%人 -> 50%价格 // 30%人 -> 30% // 40%人 -> 20% $first_u = 0.3 ; // 第一区间人数占比 $second_u = 0.3; // 第二区间人数占比 $third_u = 0.4; // 第三区间人数占比 $first_p = 0.5; // 第一区间砍价金额占比 $second_p = 0.3; // 第一区间砍价金额占比 $third_p = 0.2; // 第一区间砍价金额占比 $sim = 0.7; // 每一刀区间最少占比 $last = false; // 是否为最后一刀 if($count_joiner == 0 ){ $x = 0.4 * $amount; // 默认第一刀砍价占比 }else { $amount = 0.6 * $amount; if ($count_joiner == $ndu - 1) { // 根据设定人数,最后一位直接砍完 $x = $surplus_amount; $last = true; } else { if ((($count_joiner + 1) / $ndu) <= $first_u) { // 第一阶段 if (($count_joiner + 1) / $ndu == $first_u || ($count_joiner + 2) / $ndu > $first_u) { // 当前阶段最后一个 $x = ($first_p * $amount) - ($amount - $surplus_amount); } else { $s = $amount - $surplus_amount - 0 * $amount; // 已砍价的 $y = round(($first_p * $amount * $sim) / ($first_u * $ndu), 2); // 每人基础值 $z = $y * $count_joiner; // 已砍价的总基础值 $t = $s - $z; // 已砍加的随机值 $p = ($first_p * $amount * (1 - $sim)) - $t; // 剩余水机区间 $p = $p > 0 ? $p : 0; // 保证取值有效性 $m = $count_joiner == 0 ? 0 : ($count_joiner) / ($first_u * $count_joiner) * 3; // 计算随机最大值 $m = $m > 100 ? 100 : ($m == 0 ? 30 : $m); $x = $y + $p * mt_rand(0, $m) / 100; } } elseif ((($count_joiner + 1) / $ndu) <= 0.6) { if (($count_joiner + 1) / $ndu == ($first_u + $second_u) || ($count_joiner + 2) / $ndu > ($first_u + $second_u)) { // 本轮结束 $x = ($first_p + $second_p) * $amount - ($amount - $surplus_amount); } else { // 本轮参与人次 $s = round($amount - $surplus_amount - $first_p * $amount, 2); // 已砍价的 $y = round(($second_p * $amount * $sim) / ($second_u * $ndu), 2); // 每人基础值 $z = $y * ($count_joiner - $first_u * $ndu); // 已砍价的总基础值 $t = $s - $z; // 已砍加的随机值 $p = ($second_p * $amount * (1 - $sim)) - $t; // 剩余水机区间 $p = $p > 0 ? $p : 0; $m = ($count_joiner - $first_u * $count_joiner) / ($second_u * $count_joiner) * 3; $m = $m > 100 ? 100 : $m; $x = $y + $p * mt_rand(0, $m) / 100; } } else { $s = round($amount - $surplus_amount - $first_p * $amount - $second_p * $amount, 2); // 已砍价的 $y = round(($third_p * $amount * $sim) / ($third_u * $ndu), 2); // 每人基础值 $z = $y * ($count_joiner - $first_u * $ndu - $second_u * $ndu); // 已砍价的总基础值 $t = $s - $z; // 已砍加的随机值 $p = ($third_p * $amount * (1 - $sim)) - $t; // 剩余水机区间 $p = $p > 0 ? $p : 0; $m = ($count_joiner - $first_u * $count_joiner - $second_u * $count_joiner) / ($third_u * $count_joiner) * 3; $m = $m > 100 ? 100 : $m; $x = $y + $p * mt_rand(0, $m) / 100; } $x = round($x, 2); } } return ['last' => $last ,'x' => $x]; }
最后
以上就是孝顺乐曲最近收集整理的关于拼多多砍价算法 php的全部内容,更多相关拼多多砍价算法内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复