亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 邏輯算法 > 正文

算法也瘋狂 實現假裝商品搶購繁忙的效果(php版

2020-03-22 19:17:58
字體:
來源:轉載
供稿:網友
  • 很多做電商開發的小伙伴會遇到這個需求。

    譬如我們要做一個 商品限時秒殺的功能。 其實如果你的網站很有流量,那么很多用戶在幾秒內同時點你的商品,確實會出現“搶購人數太多,請排隊”。

    但是呢,大部分網站然而并沒有這么牛叉。為了讓用戶感受到商品很搶手,動不動就提示”系統繁忙“的效果,我們需要做一個程序來”假裝很繁忙“。 (除了淘寶,大家不要以為其他網站真的很繁忙哦,只不過人家是故意讓你覺得不搶就買不到,求懂)

    本文來設定一個規則,大家可以根據我的思路擴展即可。
    1、商品購買鏈接,每個人都可以點。
    2、我們要讓用戶有70%的可能性出現“排隊中,商品繁忙”

    本文用 php代碼實現。其他語言一樣,改改。

    首先我們用小學學到的知識想一下:
    1、 如果有10個球,其中3個紅球,7個籃球。放在袋子里。隨便胡亂的混合一下,讓你用手伸進去摸,那么摸到籃球的幾率是多少?顯然,是70%

    之前我把這個需求給了一個小伙伴看。他給出的答案如下:
    $arr=array(“red”,”red”,”red”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”);
    然后 echo $arr[rand(0,9)];
    然后告訴我,他兩句話就搞定了。

    這個做法其實已經蠻聰明了。但是這位小伙伴忽略了很重要的一點

    2、如果第二個人來摸呢? 這里有個注意點,如果第二個人來摸,那么必定要把這10個球補滿(依然是3個紅球,7個籃球)
    然后最重要的,還要繼續“胡亂的、隨便的”混合一下。這樣,第二個人來摸到籃球的幾率才會依然是70%.

    上面的程序明顯忽略了:繼續“胡亂的、隨便的”混合一下。 如果每個人都按這個 前三個紅后七個藍 來摸球。那么php的rand函數不能保證籃球是70%。

    說到這,很多大神要拿出各種高級算法,譬如啥貝葉斯、矩陣之類的字眼出來。如果這么一個電商功能要用這么復雜的運算,我相信你的老板不會同意你花這么多時間來完成這個功能吧。

    接下來,我放出一種簡單,但也不失精準性的算法。我們的目標是:使用php的簡單函數,盡可能的讓摸到籃球的幾率接近于70%。

    第一步: $arr=array(“red”,”red”,”red”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”); 這個東西要有,這就是初始化的三個紅球,7個籃球


    第二步:隨意的、胡亂的混合。

    上面一個數組有10個元素,我們可以采取隨機兩個球交換,交換多少次可以自己定

    先寫個交換函數 (如果這個函數看不懂,就要惡補基礎知識啦)
    function swap($i,$j,$arr)
    {
    $tmp=$arr[$i];
    $arr[$i]=$arr[$j];
    $arr[$j]=$tmp;
    return $arr;
    }
    這個函數實現,我輸入兩個隨便什么序號,實現對這個數組中符合該序號的求交換一下。

    第三步:優化交換算法。
    因為上面的交換函數,輸入的隨機參數導致,紅球和紅球交換,或者籃球和籃球交換。那么然而并沒有實現“真正的”混合

    所以我們要寫個補充函數,確保每次交換,都必須是紅球和籃球進行隨意交換

    function getRange($arr,$v)
    {
    $ret=array();
    for($i=0;$i<count($arr);$i++)
    {
    if($arr[$i]==$v)
    {
    $ret[]=$i;
    }
    }
    return $ret[rand(0,count($ret)-1)];
    }
    這個函數的作用是:在10個球中找到 紅球或籃球,然后分別取出他們目前所在的序號,然后利用rand函數隨機取一個籃球或者紅球的序號。

    諾看一下這里:

    $i=getRange($arr,”red”); //這樣可以取出隨機一個紅球的序號
    $j=getRange($arr,”blue”); //這樣可以取出隨機一個籃球的序號

    第四步:比較重要。開始隨意的、胡亂的混合

    for($num=0;$num<10;$num++)
    {

    $i=getRange($arr,”red”);
    $j=getRange($arr,”blue”);

    $arr=swap($i,$j,$arr);

    // echo implode(“,”, $arr).”|”.$i.”|”.$j.”<br/>”; //這個語句可以看一下輸出,混合過后的排列,是否每次都不一樣
    }

    這里的注意點是,$num<10 。代表我混合10次。 等于用你的大手到袋子里胡亂攪10次。 理論上攪的越多,隨機性越強。這里其實10次足以。

    第四步執行完成后出來的$arr 就是攪拌好的 紅球和籃球的混合體。

    第五步:再次調用 rand函數

    echo $arr[rand(0,9)];

    如果出來的是內容是blue ,則直接exit(“老子很忙,別煩”)
    如果是red,那么讓程序繼續執行購買程序吧。

    這個大家自己編寫吧。

    我的視頻教學

    1、[速學]centos+docker基礎實戰

    2、《從此不求人:自主研發一套PHP前端開發框架

    ————————————————–

    【你如果不愛讀書、不愛看新聞、不愛學習,沒關系。我來做你的”陪讀郎”】

    奴隸我的方式:請關注微信訂閱號:程序員在囧途。

    每天講故事、講商業模式、講技術給你聽。

    我的個人站點:www.hishenyi.com

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    日本三级久久久| 中文字幕日韩综合av| 亚洲天堂av在线免费| 久久久久久久久久久免费| 97欧美精品一区二区三区| 亚洲精品视频免费在线观看| 日本精品一区二区三区在线播放视频| 丁香五六月婷婷久久激情| 国产精品入口福利| 国产成人福利网站| 在线精品国产欧美| 日韩av在线直播| 成人天堂噜噜噜| 国产精品一区专区欧美日韩| 奇米影视亚洲狠狠色| 在线视频国产日韩| 亚洲国产欧美久久| 亚洲国产高清自拍| 97超级碰在线看视频免费在线看| 日韩av一区二区在线观看| 欧美大尺度在线观看| 俺去亚洲欧洲欧美日韩| 91久久精品国产91久久性色| 91在线观看免费高清完整版在线观看| 日韩国产中文字幕| 国产做受69高潮| 尤物九九久久国产精品的特点| 在线观看欧美日韩| 日本一区二区三区四区视频| 久久香蕉精品香蕉| 久久久久久成人精品| 国产精品在线看| 久久免费国产精品1| 日韩欧美国产成人| 亚洲高清免费观看高清完整版| 国产午夜精品免费一区二区三区| 国产精品你懂得| 久久久久久这里只有精品| 国产精品视频久久久| 久久夜色精品亚洲噜噜国产mv| 国产精品小说在线| 亚洲午夜未删减在线观看| 欧美超级免费视 在线| 性欧美办公室18xxxxhd| 亚洲男人天堂网| 国产综合在线观看视频| 欧美精品激情视频| 91久久精品国产91久久| 国产亚洲激情在线| 伊是香蕉大人久久| 亚洲天堂网在线观看| 久久不射热爱视频精品| 精品成人久久av| 亚洲天堂av在线免费观看| 亚洲成av人片在线观看香蕉| 亚洲一二三在线| 久久成人在线视频| 国产日韩专区在线| 国产精品成人播放| 7777kkkk成人观看| 色妞一区二区三区| 亚洲视频欧洲视频| 在线视频日本亚洲性| 亚洲四色影视在线观看| 久久久久久久香蕉网| www.99久久热国产日韩欧美.com| 大桥未久av一区二区三区| 日韩动漫免费观看电视剧高清| 欧美亚洲成人免费| 欧美激情喷水视频| 美女av一区二区| 欧美一级成年大片在线观看| 欧美一区二粉嫩精品国产一线天| 久久国产精品久久久久| 最近2019免费中文字幕视频三| 国产日韩在线精品av| 精品高清美女精品国产区| 2021国产精品视频| 色婷婷av一区二区三区在线观看| 性色av一区二区咪爱| 亚洲成人精品视频在线观看| 精品国产拍在线观看| 日韩一级裸体免费视频| 亚洲一区二区免费| 欧美精品xxx| 欧美在线亚洲一区| 久久久综合av| 国产伦精品免费视频| 日韩电影大片中文字幕| 亚洲国产精品va在看黑人| 欧美黄色小视频| 国产视频一区在线| 亚洲欧洲一区二区三区久久| 91欧美精品午夜性色福利在线| 国产97色在线|日韩| 日韩中文字幕不卡视频| 色偷偷av一区二区三区乱| 久久综合伊人77777蜜臀| 国产精品美女久久| 中文字幕亚洲一区| 这里只有精品久久| 欧美成年人网站| 亚洲国产成人久久| 亚洲va电影大全| 亚洲a在线播放| 亚洲aa中文字幕| 亚洲无线码在线一区观看| 欧美日韩成人在线播放| 亚洲一区二区三区四区在线播放| 一区二区三区久久精品| 日韩最新免费不卡| 亚洲国产日韩欧美综合久久| 国产婷婷色综合av蜜臀av| 91精品国产精品| 久久久久久久久爱| 亚洲黄色在线观看| 久久91超碰青草是什么| 97精品视频在线| 97色在线观看| 51视频国产精品一区二区| 在线播放国产一区二区三区| 国产精品国产三级国产aⅴ浪潮| 最近免费中文字幕视频2019| 亚洲精品大尺度| 懂色aⅴ精品一区二区三区蜜月| 国产不卡精品视男人的天堂| 亚洲天堂第二页| 欧美性一区二区三区| 最近2019好看的中文字幕免费| 不卡在线观看电视剧完整版| 欧美性猛交丰臀xxxxx网站| 精品视频在线播放色网色视频| 久久99视频精品| 亚洲石原莉奈一区二区在线观看| 日韩精品一区二区三区第95| 久久久精品国产| 久久精品亚洲国产| 国产美女高潮久久白浆| 亚洲欧美日本伦理| 日韩在线视频播放| 欧美性少妇18aaaa视频| 亚洲精品mp4| 亚洲成色www8888| 国产成人一区三区| 亚洲国产成人一区| 91成人在线视频| 亚洲欧洲午夜一线一品| 欧美日韩xxxxx| 成人xvideos免费视频| 精品福利樱桃av导航| 国产精品极品美女在线观看免费| 久久精品99国产精品酒店日本| 日韩在线观看免费av| 岛国av在线不卡| 91精品国产色综合久久不卡98| 亚洲欧美国产日韩天堂区| 日韩国产欧美精品一区二区三区| 国产精品日韩电影| 亚洲国产美女久久久久| 91久久精品美女高潮| 精品无人区太爽高潮在线播放| 精品自拍视频在线观看| 日韩欧美一区二区三区久久| 成人精品一区二区三区|