欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python如何實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)

本篇內(nèi)容主要講解“Python如何實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python如何實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)”吧!

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、汾西網(wǎng)站維護(hù)、網(wǎng)站推廣。

    一、文章主題

    在看到相關(guān)的抽獎(jiǎng)詐騙報(bào)道,有的人卻不明白是怎么回事。為了預(yù)防被抽獎(jiǎng)詐騙,因此,我們通過(guò)一些簡(jiǎn)單的例子來(lái)說(shuō)一說(shuō),抽獎(jiǎng)更深層的邏輯,讓大家直觀(guān)的看到抽獎(jiǎng)背后隱藏的東西,防止上當(dāng)受騙。

    二、抽獎(jiǎng)設(shè)計(jì)思路

    首先,先來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽獎(jiǎng)邏輯,我們需要確定每個(gè)獎(jiǎng)品的概率,并根據(jù)概率進(jìn)行抽取。

    第一步:需求

    有獎(jiǎng)品列表。每一個(gè)獎(jiǎng)品都有對(duì)應(yīng)的概率。用戶(hù)抽獎(jiǎng)獲得對(duì)應(yīng)概率商品。

    第二步:建立獎(jiǎng)品列表

    根據(jù)上面的要求,我們建立對(duì)應(yīng)的獎(jiǎng)品表,概率我們選用1-100的整數(shù),當(dāng)然也可以選擇0-1。

    # 獎(jiǎng)品列表和對(duì)應(yīng)的概率,和為100
    prizes = {"一等獎(jiǎng)": 10,"二等獎(jiǎng)": 20,"三等獎(jiǎng)": 30,"參與獎(jiǎng)": 40 }
    第三步:概率實(shí)現(xiàn)

    這就是一個(gè)基礎(chǔ)的抽獎(jiǎng)邏輯,代碼實(shí)現(xiàn)難點(diǎn)主要是概率,如何去實(shí)現(xiàn)概率,能獲得抽中的獎(jiǎng)品。

    關(guān)于概率我們需要使用到random模塊,也就是我們需要使用到隨機(jī)數(shù)。這里我這里有兩種方式可供選擇。

    第一種:通過(guò)區(qū)間實(shí)現(xiàn)

    抽獎(jiǎng)概率選用區(qū)間的方式實(shí)現(xiàn),將抽獎(jiǎng)的概率分成若干個(gè)區(qū)間,每個(gè)區(qū)間對(duì)應(yīng)一個(gè)獎(jiǎng)品,然后根據(jù)隨機(jī)數(shù)的范圍來(lái)確定中獎(jiǎng)的區(qū)間。例如,我們可以將抽獎(jiǎng)的概率分成以下幾個(gè)區(qū)間:

    • - 區(qū)間1:0%~20%,對(duì)應(yīng)獎(jiǎng)品A

    • - 區(qū)間2:20%~50%,對(duì)應(yīng)獎(jiǎng)品B

    • - 區(qū)間3:50%~80%,對(duì)應(yīng)獎(jiǎng)品C

    • - 區(qū)間4:80%~100%,對(duì)應(yīng)獎(jiǎng)品D

    當(dāng)用戶(hù)抽獎(jiǎng)時(shí),我們可以生成一個(gè)0~100之間的隨機(jī)數(shù),然后根據(jù)隨機(jī)數(shù)所在的區(qū)間來(lái)確定中獎(jiǎng)的獎(jiǎng)品。例如,如果生成的隨機(jī)數(shù)是35,那么就會(huì)中獎(jiǎng)區(qū)間2,對(duì)應(yīng)獎(jiǎng)品B。

    優(yōu)點(diǎn):這種方式實(shí)現(xiàn)抽獎(jiǎng)概率的好處是可以靈活地控制各個(gè)獎(jiǎng)品的中獎(jiǎng)概率,同時(shí)也可以根據(jù)實(shí)際情況進(jìn)行調(diào)整。

    缺點(diǎn):各個(gè)獎(jiǎng)品的中獎(jiǎng)概率之和必須等于100%,否則會(huì)導(dǎo)致抽獎(jiǎng)結(jié)果不準(zhǔn)確。

    import random
     
    # 獎(jiǎng)品列表和對(duì)應(yīng)的概率
    prizes = {"一等獎(jiǎng)":10,"二等獎(jiǎng)":20,"三等獎(jiǎng)":30,"參與獎(jiǎng)":40}
    #我們可以看做:
    # 一等獎(jiǎng):(0,10]
    # 二等獎(jiǎng):(10,30]
    # 三等獎(jiǎng):(30,60]
    # 參與獎(jiǎng):(60,100]
     
    # 抽獎(jiǎng)函數(shù)
    def lottery():
        # 生成一個(gè)1~100之間的隨機(jī)數(shù)
        lucky_number = random.randint(0,100)
        # 初始化區(qū)間值和獎(jiǎng)品名稱(chēng)
        prob_sum_start = 0
        prob_sum_end = 0
        prize_name = None
     
        # 遍歷獎(jiǎng)品列表
        for name, prob in prizes.items():
            # 累加后一個(gè)區(qū)間值
            prob_sum_end += prob
            # 如果隨機(jī)數(shù)在計(jì)算區(qū)間內(nèi),則中獎(jiǎng)
            if prob_sum_start<lucky_number <= prob_sum_end:
                prize_name = name
                break
    # 累加前一個(gè)區(qū)間值
            prob_sum_start = prob
        #返回隨機(jī)值和中獎(jiǎng)產(chǎn)品
        return lucky_number,prize_name
    第二種:通過(guò)獎(jiǎng)品概率累加實(shí)現(xiàn)

    我們可以通過(guò)概率累加的方式來(lái)實(shí)現(xiàn)抽獎(jiǎng),首先生成一個(gè)1到100之間的隨機(jī)數(shù),表示本次抽獎(jiǎng)的結(jié)果。

    然后按照獎(jiǎng)品的概率依次累加,直到累加的結(jié)果大于等于隨機(jī)數(shù)為止。

    最后停止累加的獎(jiǎng)品概率即為本次抽中的獎(jiǎng)品。

    例如,如果隨機(jī)數(shù)為50,則按照概率累加的方式,可以得到以下結(jié)果:

    # 獎(jiǎng)品列表和對(duì)應(yīng)的概率,和為100
    prizes = {"一等獎(jiǎng)": 10,"二等獎(jiǎng)": 20,"三等獎(jiǎng)": 30,"參與獎(jiǎng)": 40 }

    10< 50,不是一等獎(jiǎng);

    10 + 20 = 30 < 50,不是二等獎(jiǎng);

    10 + 20 + 30 = 60 >= 50,是三等獎(jiǎng)。

    因此,本次抽中的獎(jiǎng)品為三等獎(jiǎng)。

    優(yōu)點(diǎn):可以靈活地調(diào)整獎(jiǎng)品的概率,以達(dá)到不同的抽獎(jiǎng)效果。這種方法也可以應(yīng)用于多個(gè)獎(jiǎng)品的情況,只需要按照相應(yīng)的概率進(jìn)行累加即可,簡(jiǎn)單易懂、實(shí)現(xiàn)方便。

    缺點(diǎn):缺點(diǎn)是需要計(jì)算每個(gè)獎(jiǎng)品的累加概率,如果獎(jiǎng)品數(shù)量較多,計(jì)算量可能較大。

    import random
     
    # 獎(jiǎng)品列表和對(duì)應(yīng)的概率
    prizes = {"一等獎(jiǎng)": 10, "二等獎(jiǎng)": 20, "三等獎(jiǎng)": 30, "參與獎(jiǎng)": 40}
     
     
    # 抽獎(jiǎng)函數(shù)
    def lottery():
        # 生成一個(gè)1~100之間的隨機(jī)數(shù)
        lucky_number = random.randint(1, 100)
        print(lucky_number)
        # 初始化概率總和和獎(jiǎng)品名稱(chēng)
        prob_sum = 0
        prize_name = None
     
        # 遍歷獎(jiǎng)品列表
        for name, prob in prizes.items():
            # 累加概率總和
            prob_sum += prob
            # 如果隨機(jī)數(shù)小于等于概率總和,則中獎(jiǎng)
            if lucky_number <= prob_sum:
                prize_name = name
                break
        return prize_name
    第四步:增加特殊機(jī)制

    在我們參與某些活動(dòng),或者某些抽獎(jiǎng)之后,總是會(huì)被人引誘,被大獎(jiǎng)沖昏頭腦,那抽獎(jiǎng)機(jī)制是什么,我們也不清楚,這可如何解決。前面我們可以讓每一個(gè)獎(jiǎng)品按照設(shè)置的獎(jiǎng)品概率進(jìn)行抽獎(jiǎng),這時(shí),我們需要增加一些特殊機(jī)制,這些機(jī)制就是被“詐騙”的機(jī)制,或者說(shuō),被“安排”的機(jī)制。

    第一種:想讓誰(shuí)中獎(jiǎng),就讓誰(shuí)中獎(jiǎng)

    這種方式,主要用在聚會(huì)惡搞場(chǎng)合,大家可要注意了,這種就不要線(xiàn)上了,因?yàn)槟悴恢肋@個(gè)抽獎(jiǎng)程序是誰(shuí)寫(xiě)的。

    針對(duì)這種方式,我們需要增加白名單。判斷如果是白名單內(nèi)的人,那我們就讓他種指定獎(jiǎng)品。

    代碼如下:

    import random
     
    # 獎(jiǎng)品列表和對(duì)應(yīng)的概率
    prizes = {"一等獎(jiǎng)": 10, "二等獎(jiǎng)": 20, "三等獎(jiǎng)": 30, "參與獎(jiǎng)": 40}
    #白名單列表
    whitelist = ["Tom", "Jerry", "Lucy"]
    # 抽獎(jiǎng)函數(shù)
    def lottery(white_user):
        # 生成一個(gè)1~100之間的隨機(jī)數(shù)
        lucky_number = random.randint(1, 100)
        print(lucky_number)
        # 初始化概率總和和獎(jiǎng)品名稱(chēng)
        prob_sum = 0
        prize_name = None
        
        #判斷在白名單內(nèi),中一等獎(jiǎng)
        if white_user in whitelist:
            return "恭喜您中一等獎(jiǎng)"
            # 遍歷獎(jiǎng)品列表
        else:
            for name, prob in prizes.items():
                # 累加概率總和
                prob_sum += prob
                # 如果隨機(jī)數(shù)小于等于概率總和,則中獎(jiǎng)
                if lucky_number <= prob_sum:
                    prize_name = name
                    break
        return prize_name
    第二種:參與了另外一個(gè)活動(dòng),才可以來(lái)抽獎(jiǎng)

    這種方式增加了資格的驗(yàn)證,也可以是,有用戶(hù)信息之后,才能參與抽獎(jiǎng),也算是增加了一些安全限制。

    如果用戶(hù)參與了另外一個(gè)活動(dòng),或者是登錄了,才能參與活動(dòng),進(jìn)入活動(dòng)流程。

    代碼如下:

    import random
     
    # 獎(jiǎng)品列表和對(duì)應(yīng)的概率
    prizes = {"一等獎(jiǎng)": 10, "二等獎(jiǎng)": 20, "三等獎(jiǎng)": 30, "參與獎(jiǎng)": 40}
    #已參加另外一個(gè)活動(dòng)列表
    active_user = []
     
    #加法活動(dòng)
    def addition(name):
        active_user.append(name)
        return name+"參加了活動(dòng)"
     
     
    # 抽獎(jiǎng)函數(shù)
    def lottery(name):
        # 生成一個(gè)1~100之間的隨機(jī)數(shù)
        lucky_number = random.randint(1, 100)
     
        # 初始化概率總和和獎(jiǎng)品名稱(chēng)
        prob_sum = 0
        prize_name = None
     
        # 判斷在白名單內(nèi),中一等獎(jiǎng)
        if name not in active_user:
            return "很抱歉,您沒(méi)有資格參與活動(dòng)"
     
        else:
            # 遍歷獎(jiǎng)品列表
            for name, prob in prizes.items():
                # 累加概率總和
                prob_sum += prob
                # 如果隨機(jī)數(shù)小于等于概率總和,則中獎(jiǎng)
                if lucky_number <= prob_sum:
                    prize_name = name
                    break
        return prize_name
     
    #測(cè)試一下
    print(lottery("Tom"))#如果沒(méi)有參與加法活動(dòng),來(lái)參與,無(wú)法抽獎(jiǎng)
    print(addition("Tom"))#Tom先來(lái)參與加法活動(dòng)再去參與活動(dòng)
    print(lottery("Tom"))#參與活動(dòng)抽獎(jiǎng)
    第三種:打死都不讓你中

    這種活動(dòng)純純就是惡心人而做的,但是所有參加的用戶(hù)完全就是不知道,都會(huì)以為是自己的運(yùn)氣差。大獎(jiǎng)就在哪里,就是拿不到。

    這都不用概率,直接給你出結(jié)果,完全就是他的營(yíng)銷(xiāo)手段。

    代碼如&hellip;&hellip;不如了,都不需要,直接一個(gè)return搞定。

    第四種:概率都是百分比,但是效果不一樣

    這種就需要和我們?cè)O(shè)置的隨機(jī)范圍撤上關(guān)系,我們的隨機(jī)范圍是1-100,比例為百分比1-100的整數(shù),但是當(dāng)我們加上小數(shù)之后,就不一樣。比如:

    1%和1.00%

    那現(xiàn)在這兩種概率你覺(jué)得是一樣的嗎?

    答案肯定是不一樣的,第一個(gè)是百分之一,第二個(gè)則是萬(wàn)分之一。因?yàn)榈谝粋€(gè)沒(méi)有算小數(shù),第二個(gè)還有兩位小數(shù),看似相等,其實(shí)已經(jīng)變了。

    如下圖:這三個(gè)箭頭指向,所占比例大概就是80%,20%,當(dāng)我們數(shù)據(jù)越多,范圍就會(huì)越廣,如果隨機(jī),那數(shù)據(jù)會(huì)更容易落到80%。

    抽獎(jiǎng)概率正確性,我們其實(shí)可以從概率的統(tǒng)計(jì)定義中來(lái)看待。

    在一定條件下,重復(fù)做n次試驗(yàn),nA為n次試驗(yàn)中事件A發(fā)生的次數(shù),如果隨著n逐漸增大,頻率nA/n逐漸穩(wěn)定在某一數(shù)值p附近,則數(shù)值p稱(chēng)為事件A在該條件下發(fā)生的概率。

    就是說(shuō)數(shù)值越多,越是能證明概率的正確性。但是,我們抽獎(jiǎng)只有一次機(jī)會(huì)。對(duì)于我來(lái)說(shuō)80%肯定比20%更加容易隨機(jī)。

    代碼控制:控制隨機(jī)值,1-10000。

    第五種:某榮耀-有機(jī)率

    有機(jī)率估計(jì)是某王常用套路了,有機(jī)率基本等于沒(méi)有。文字游戲算是被玩明白了。當(dāng)然因?yàn)橛脩?hù)體量比較大,因此,也可能采用第4種方式,萬(wàn)分之一,或者是百萬(wàn)分之一。

    第六種:保底機(jī)制

    這種機(jī)制就是比較明確的,整體意思就是,我已經(jīng)做好坑你準(zhǔn)備了,但是坑了我就收手,讓你看到希望,給你大獎(jiǎng)。常見(jiàn)的有抽了多少次,我就給你中什么獎(jiǎng)品。

    這里我們?cè)O(shè)置保底機(jī)制為10次必中一等獎(jiǎng)。如果前9次都沒(méi)有中獎(jiǎng),第10次一定中一等獎(jiǎng)。

    代碼如下:

    import random
     
    # 獎(jiǎng)品列表和對(duì)應(yīng)的概率
    prizes = {"一等獎(jiǎng)": 1, "二等獎(jiǎng)": 2, "三等獎(jiǎng)": 3, "參與獎(jiǎng)": 94}
     
    lottery_num = 0  # 記錄已經(jīng)抽中的一等獎(jiǎng)、二等獎(jiǎng)、三等獎(jiǎng)的次數(shù)
    # 抽獎(jiǎng)函數(shù)
    def lottery():
        # 生成一個(gè)1~100之間的隨機(jī)數(shù)
        global lottery_num
        lucky_number = random.randint(1, 100)
        print(lucky_number,lottery_num)
        # 初始化概率總和和獎(jiǎng)品名稱(chēng)
        prob_sum = 0
        prize_name = None
     
        # 遍歷獎(jiǎng)品列表
        for name, prob in prizes.items():
            # 累加概率總和
            prob_sum += prob
            # 如果隨機(jī)數(shù)小于等于概率總和,則中獎(jiǎng)
            if lucky_number <= prob_sum:
                prize_name = name
                break
        if prize_name=="參與獎(jiǎng)":
            lottery_num += 1
            if lottery_num == 10:
                return "恭喜你,中一等獎(jiǎng)"
            return prize_name
        else:
            lottery_num=0
            return prize_name
     
    for i in range(10):
        print(lottery())

    到此,相信大家對(duì)“Python如何實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

    本文題目:Python如何實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)
    URL網(wǎng)址:http://aaarwkj.com/article32/psocsc.html

    成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)網(wǎng)站設(shè)計(jì)公司、全網(wǎng)營(yíng)銷(xiāo)推廣網(wǎng)站維護(hù)、電子商務(wù)、云服務(wù)器

    廣告

    聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

    成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
    精品人妻人伦一区二区三区 | 亚洲国产在线一区二区| 久久婷婷综合激情亚洲| 国产高清在线a视频大全| 粉嫩国产精品一区二区| 久久精品一本久久99精品| 男男啪啪猛进猛出无遮挡| 变态另类欧美国产在线| 久久精品国产亚洲av波多| 人妻少妇久久中文字幕久久| 国产精品大片一区二区三区四区 | 亚洲福利视频在线观看免费| 色婷婷综合激情一区二区| 偷拍一区二区三区四区| 国产亚洲av看码精品永久| 97视频免费观看在线| 天天精品国产av九九久久久| 久久精品人妻少妇一区二区| 午夜福利尤物一区二区| 蜜臀av首页在线观看| 国产一级黄色免费大片| 亚洲人妻av一区二区| 日韩在线一区二区三区电影| 国产一区二区日本在线| 欧美成人午夜福利在线视频| 漂亮人妻少妇中文字幕| 婷婷五激情五月激情片| 欧美福利免费在线视频| 水蜜桃成人在线视频免费观看 | 高清免费在线自偷自拍| 日韩美少妇大胆一区二区| 亚洲国产女人精品久久久| 日本丝袜福利在线观看| 亚洲国产欧美日韩在线一区| 精品久久亚洲一区二区欧美| 亚洲一区二区日韩在线| 中文字幕有码精品在线| 在线激情av中文字幕| 人妻中文字幕视频在线| 在线国产一区二区不卡| 欧美欧美欧美欧美一二三区|