日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

微信红包模拟

發(fā)布時(shí)間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信红包模拟 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 實(shí)驗(yàn)?zāi)康?/span>
  • 實(shí)驗(yàn)原理
  • 實(shí)驗(yàn)步驟
  • 實(shí)驗(yàn)結(jié)果及分析
  • “運(yùn)氣王”游戲模擬
  • 程序代碼
  • 一、實(shí)驗(yàn)?zāi)康?/span>

    1.學(xué)習(xí)并掌握matlab模擬隨機(jī)過(guò)程的方法。

    2.驗(yàn)證切比雪夫大數(shù)定律。

    3.探索微信紅包抽取順序與抽取金額的關(guān)系。

    4.探索微信紅包“運(yùn)氣王”游戲獲得最大利益的方案。

    二、實(shí)驗(yàn)原理

    1. 離散均勻分布

    離散均勻分布是統(tǒng)計(jì)學(xué)中的一種離散型分布族。常記為{DiscreteU(a,b):a<b};

    設(shè)n=[b-ah],隨機(jī)變量X的取值為X=a+ih,i=0,1,2,…,n-1;概率分布函數(shù)為P(X=a+ih)=1/n, i=0,1,2,…,n-1.那么稱此隨機(jī)變量服從參數(shù)為a,b,h的離散均勻分布。

    2.微信紅包抽取金額的分布Yi

    設(shè)有n個(gè)人,Xi,i=1,2,..,n,依次抽取微信紅包,紅包總額為H元,記Xi搶到的金額為Yi元。每次抽紅包的金額服從0.01到剩余金額的均值的兩倍的左閉右開(kāi)區(qū)間上的離散均勻分布,且最后一人獲得剩余所有金額,即

    PYi=0.01k=n-i+1200(H-j=1i-1Yj)-n+i-1,200(H-j=1i-1Yj)n-i+1為整數(shù)1200(H-j=1i-1Yj)n-i+1,200(H-j=1i-1Yj)n-i+1不為整數(shù)

    i=1,2,…,n-1

    k=1,2,…,N

    N=200(H-j=1i-1Yj)n-i+1-1,200(H-j=1i-1Yj)n-i+1為整數(shù)200(H-j=1i-1Yj)n-i+1,200(H-j=1i-1Yj)n-i+1不為整數(shù)

    Yn=H-i=1n-1Yi.

    Y1的期望EY1Y2的期望E(Y2),考慮10個(gè)人,依次抽取總額為100元的紅包的情形,則

    EY1=i=119990.01k*11999=10

    3.切比雪夫大數(shù)定律

    考慮每人抽到紅包的金額的期望,因?yàn)?/span>DYi有限,i=1,2,…,n,所以由切比雪夫大數(shù)定律有,?ε>0,

    limn→∞PEYi-1ni=1nYii<ε=1

    三、實(shí)驗(yàn)步驟

    1.編寫程序1,模擬10人抽取總額為100元的紅包,模擬100000次,記錄每人成為運(yùn)氣王的頻率,重復(fù)10次。并繪制成為運(yùn)氣王的頻率與抽取紅包順序的關(guān)系圖。

    2.編寫程序2,模擬10人抽取總額為100元的紅包,模擬100000次,記錄每人抽取金額的均值與方差。并繪制每人抽取金額的均值、方差分別與抽取紅包順序的關(guān)系圖。

    四、實(shí)驗(yàn)結(jié)果及分析

    1. 成為運(yùn)氣王的頻率與抽取順序的關(guān)系

    頻率分布表為:

    頻率分布圖為:

    結(jié)果分析:在10人抽取紅包種,第5位成為運(yùn)氣王的頻率最低;第5位之后,成為運(yùn)氣王的頻率逐漸上升;第9位、10位成為運(yùn)氣王的頻率較高,且近似相等。

    2.抽取金額均值、方差分別與抽取順序的關(guān)系

    抽取金額均值與抽取順序的關(guān)系表:

    抽取金額均值與抽取順序的關(guān)系圖:

    抽取金額方差與抽取順序的關(guān)系表:

    抽取金額方差與抽取順序的關(guān)系圖:

    結(jié)果分析:

    (1)第一位抽取紅包的人所抽取的金額的均值為9.98,接近10,符合切比雪夫大數(shù)定律。

    (2)取的期望金額與順序無(wú)關(guān),但隨著抽取順序的增加,抽取金額的方差逐漸增大。

    3.抽取紅包的順序與收益的關(guān)系

    (1)當(dāng)抽取次數(shù)足夠多時(shí),抽取金額的期望與抽取順序無(wú)關(guān)。

    (2)當(dāng)抽取次數(shù)較少時(shí),抽取順序越靠后,抽到最大紅包的概率越大,但抽取金額的方差也越大,即抽到較小紅包的概率變大,風(fēng)險(xiǎn)增大。

    五、“運(yùn)氣王”游戲模擬

    游戲1:10人進(jìn)行搶紅包游戲,每人搶紅包的順序不變,搶到的金額如上分布,每人有初始金額1000元,有初始紅包100元,每局的手氣最的人發(fā)100元紅包進(jìn)行下一局,當(dāng)一局游戲結(jié)束時(shí),若有一人的剩余金額小于100,則游戲結(jié)束。

    游戲2:在游戲1的基礎(chǔ)上,將每局發(fā)紅包的人由“手氣最佳的人”改為“手氣最差的人”。其余保持不變。

    實(shí)驗(yàn)步驟:編寫程序3模擬游戲1,編寫程序4模擬游戲2,并記錄游戲結(jié)束時(shí),平均游戲局?jǐn)?shù)與平均剩余金額。若令Moneyi為每一局游戲結(jié)束時(shí)每人的剩余金額,Yij為第i局游戲中結(jié)束時(shí),第j個(gè)人的剩余金額,則

    Moneyi=[Yi1,Yi2,…,Yin]

    Moneyi為帶吸收壁的隨機(jī)游動(dòng)過(guò)程。

    模擬結(jié)果:

    游戲1:運(yùn)行結(jié)果:

    平均游戲局?jǐn)?shù):averagek = 246.3463

    平均剩余金額如下圖:

    結(jié)論:前7位預(yù)期收益為正,后3位預(yù)期收益為負(fù);第4、5的預(yù)期收益最大,第9、10的預(yù)期虧損最大。

    Game2:

    平均游戲局?jǐn)?shù):averagek = 169.7919

    平均剩余金額如下圖:

    結(jié)論:前7位預(yù)期收益為正,后3位的預(yù)期收益為負(fù);且隨著抽取順序的靠后,預(yù)期收益逐漸變小。

    六、程序代碼

    程序1

    %n個(gè)人x1,x2,...,xn,H元紅包,xi抽到y(tǒng)i元紅包,sup為每次取紅包上界

    %模擬m次

    function lottery(n,H,m)

    y=zeros(m,n);kinglucknum=zeros(1,n);

    for j=1:m

    ??? sum=0;

    for i=1:n-1

    ??? sup=2*(H-sum)/(n-i+1);

    ??? if floor(100*sup)==(100*sup)

    ??????? y(j,i)=unidrnd(100*sup-1)/100;

    ??? else

    ??????? y(j,i)=unidrnd(floor(100*sup))/100;

    ??? end

    ??? sum=sum+y(j,i);

    end

    y(j,n)=H-sum;

    example=y(j,:);

    [~,who]=max(example);

    kinglucknum(who)=kinglucknum(who)+1;

    end

    [~,kingluck]=max(kinglucknum);

    kinglucknum

    kingluck

    rate=kinglucknum/m;

    plot(rate)

    end

    程序2

    %n個(gè)人x1,x2,...,xn,H元紅包,xi抽到y(tǒng)i元紅包,sup為每次取紅包上界

    %模擬m次

    function expectation(n,H,m)

    y=zeros(m,n);average=zeros(1,n);variance=zeros(1,n);

    for j=1:m

    ??? sum=0;

    for i=1:n-1

    ??? sup=2*(H-sum)/(n-i+1);

    ??? if floor(100*sup)==(100*sup)

    ??????? y(j,i)=unidrnd(100*sup-1)/100;

    ??? else

    ??????? y(j,i)=unidrnd(floor(100*sup))/100;

    ??? end

    ??? sum=sum+y(j,i);

    end

    y(j,n)=H-sum;

    end

    for i=1:n

    ??? for j=1:m

    ??? average(i)=average(i)+y(j,i);

    ??? end

    ??? average(i)=average(i)/m;

    end

    for i=1:n

    ??? for j=1:m

    ??????? variance(i)=variance(i)+(y(j,i)-average(i))^2;

    ??? end

    ??? variance(i)=variance(i)/m;

    end

    N=1:n;

    average,variance

    figure(1)

    scatter(N,average)

    box off

    figure(2)

    scatter(N,variance)

    box off

    end

    程序3

    function game1(n,H,m,M0)

    %n:人數(shù);H:紅包金額;m:模擬次數(shù);M0:初始金額;k局?jǐn)?shù);

    %averagemoney:每人剩余金額的期望;average:游戲局?jǐn)?shù)的均值

    money=M0*ones(m,n);k=zeros(1,m);

    for j=1:m

    y=zeros(1,n);

    while all(money(j,:)>=H)

    ??? k(j)=k(j)+1;sum=0;

    ??? if k(j)>1

    ??????? money(j,who0)=money(j,who0)-H;

    ??? end

    for i=1:n-1

    ??? sup=2*(H-sum)/(n-i+1);

    ??? if floor(100*sup)==(100*sup)

    ??????? y(i)=unidrnd(100*sup-1)/100;

    ??? else

    ??????? y(i)=unidrnd(floor(100*sup))/100;

    ??? end

    ??? money(j,i)=money(j,i)+y(i);

    ??? sum=sum+y(i);

    end

    y(n)=H-sum;money(j,n)=money(j,n)+y(n);

    [~,who0]=max(y);

    end

    end

    T=1:n;

    averagemoney=mean(money,1);averagek=mean(k)

    scatter(T,averagemoney)

    end

    程序4:

    function game2(n,H,m,M0)

    %n:人數(shù);H:紅包金額;m:模擬次數(shù);M0:初始金額;k局?jǐn)?shù);

    %averagemoney:每人剩余金額的期望;average:游戲局?jǐn)?shù)的均值

    money=M0*ones(m,n);k=zeros(1,m);

    for j=1:m

    y=zeros(1,n);

    while all(money(j,:)>=H)

    ??? k(j)=k(j)+1;sum=0;

    ??? if k(j)>1

    ??????? money(j,who0)=money(j,who0)-H;

    ??? end

    for i=1:n-1

    ??? sup=2*(H-sum)/(n-i+1);

    ??? if floor(100*sup)==(100*sup)

    ??????? y(i)=unidrnd(100*sup-1)/100;

    ??? else

    ??????? y(i)=unidrnd(floor(100*sup))/100;

    ??? end

    ??? money(j,i)=money(j,i)+y(i);

    ??? sum=sum+y(i);

    end

    y(n)=H-sum;money(j,n)=money(j,n)+y(n);

    [~,who0]=min(y);

    end

    end

    T=1:n;

    averagemoney=mean(money,1);averagek=mean(k)

    scatter(T,averagemoney)

    end

    總結(jié)

    以上是生活随笔為你收集整理的微信红包模拟的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。