基于PHP的限时限时抢购商品的效果

最近我们做了一个项目,相关的商品显示了购买和购买的功能,比如说我们的网站很流量,所以成千上万的用户在几秒钟内点你的产品,会出现太多的抢购,会提示系统忙。

然而,大多数的网站,但不是很好。为了让用户觉得产品很忙,它提醒系统繁忙,我们需要制定一个计划,假装很忙。(除了淘宝,人们不认为其他网站真的很忙,但人是故意让你觉得你不能买它,理解它)。

这篇文章规定了一个规则,你可以根据我的想法来扩展它。

1,商品购买环节,大家可以点。



2,我们要让用户有70%的排队可能性,商品都很忙。

本文是在PHP代码中实现的。

首先,我们思考一下我们在小学所学的知识。

1。如果有10个球,有3个红球和7个篮球,放在包里,碰篮球的机会是什么显然,是70%

我以前把这个需要给了一个小伙伴,他给出的答案如下:

$ ARR =阵列(红色,红色,红色,蓝色,蓝色,蓝色,蓝色,蓝色,蓝色,蓝色);



然后echo ARR {兰德(0.9)};



然后告诉我他做了两个句子。

它真的很聪明,但是这个小家伙忽略了一个非常重要的问题。

2。如果第二个人碰它怎么办这里有一点值得注意。如果第二个人碰它,他们必须填满10个球(仍然是3个红球,7个篮球)。

最重要的是继续混乱,一个随意的混合,这样,第二个人接触篮球的机会仍然是70%。

上面的节目明显被忽略了:继续随意随意地混合,如果每个人在前七个项目中用前三个红色触球,那么PHP的兰德函数不能保证篮球是70%。

说到这一点,很多大人物都会想出各种高级算法,比如拜厄斯和矩阵之类的词,如果这样的电子商务功能使用如此复杂的操作,我相信你的老板不会同意你花这么多时间完成这个功能。

接下来,我给出了一个简单但不准确的算法,我们的目标是尽可能地利用PHP的简单功能,让我们有机会接近70%的篮球。

第一步:$ ARR =阵列(红色,红色,红色,蓝色,蓝色,蓝色,蓝色,蓝色,蓝色,蓝色);这件事,这是三个红色球初始化,7个篮球



第二步:随机,随机混合。



上面的数组有10个元素,我们可以随机两个球交换,你可以自己交换多少次



首先编写一个开关函数(如果函数不能读取,具有追赶的基本知识)。




功能互换(合我,J,$ ARR)
{
TMP =美元美元美元ARR {我};
ARR {我} =美元美元美元美元ARR {,};
ARR { } =美元美元美元,TMP;
返回的数组;
}


这个函数被实现,我输入两个随机序数来实现这个数组中序列号的交换。

第三步是优化切换算法。

由于上面的交换函数,输入的随机参数会导致红球和红球的交换,或者篮球和篮球的交换,那么就没有真正的混合。

因此,我们必须写一个补充的功能,以确保每个交易所必须是一个免费的交换红球和篮球。


功能getrange($ ARR,$ V)
{
$ =数组();
为($我= 0;$我<计数($ ARR);$我+ +)
{
如果($ ARR { $我} = = $ V)
{
美元;
}
}
返回$(0,计数(RET)- 1)};
}


这个函数的作用是在10个球中找到红球或篮球,然后提取他们所属篮球运动员的序号,然后用兰德函数随机挑选出篮球或红球的序列号。

看这里。



我= getrange($ ARR,红色); / /这可能需要一个随机数的红

J = getrange($ ARR,蓝色); / /这可能需要一个随机数的篮球

第四步:更重要。

开始一个随机的,随机的混合


为($ = 0;美元;10;美元+ +)
{

我= getrange($ ARR,红色);
J = getrange($ ARR,蓝色);

$ ARR =互换($ I,J,$ ARR);

(美元崩溃,ARR,回声/。|美元。我|美元。J.); / /这个语句可以看输出,混合安排,无论是各不相同的
}


这里的关注点是,$num<10。我混合在我倍10倍大的手代表你的包,理论更多的激荡,更多的随机性,这实际上是10次足够。

$ ARR出来后,第四步是混合搅拌的红球和蓝球。

第五步:再次调用兰德函数

echo ARR {兰德(0.9)};

如果内容是蓝色的,那么直接退出(Lao Tzu非常忙,不要打扰)

如果是红色,则让程序继续执行购买程序。