• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論


            問(wèn)題:rand7能生成1-7的整數(shù)隨機(jī)數(shù)。要求利用rand7生成1-10的整數(shù)隨機(jī)數(shù)。

            總結(jié)探討幾種方法,并給出比較。我在最初寫(xiě)這篇文章的時(shí)候,出了一些錯(cuò)誤,主要的原因是測(cè)試的方法不對(duì),因此本文也強(qiáng)調(diào)一下對(duì)隨機(jī)測(cè)試的問(wèn)題。感慨一下知識(shí)的浩瀚和自己的渺小。感謝mingliang1212hpsmouse的幫助。可以參看原帖
             
            1.  舍去法

            一次rand7運(yùn)算只能生成7個(gè)整數(shù),沒(méi)有辦法均勻的映射到10個(gè)整數(shù)上。但是運(yùn)行兩次rand7可以生成49個(gè)數(shù)字,如果這49個(gè)數(shù)字是均勻分布的,舍去多余的9個(gè),剩下的40個(gè)正好可以用模10運(yùn)算映射到10個(gè)整數(shù)上。
            代碼1
            int i;
            do
            {
                i 
            = 7 * (rand7() - 1+ rand7();  // it is now uniformly random between 1 and 49
            while(i > 40);      // it is now uniformly random between 1 and 40
            return i % 10 + 1;  // result is now uniformly random between 1 and 10

            這個(gè)算法做到了從40個(gè)數(shù)字均勻映射到1到10,這樣說(shuō)有些抽象,進(jìn)一步形象的來(lái)說(shuō)明,考慮如下的種子矩陣:
            int seed7[7][7= {
                {
            1 , 2 , 3 , 4 , 5 , 6 , 7},
                {
            8 , 9 , 101 , 2 , 3 , 4},
                {
            5 , 6 , 7 , 8 , 9 , 101},
                {
            2 , 3 , 4 , 5 , 6 , 7 , 8},
                {
            9 , 101 , 2 , 3 , 4 , 5},
                {
            6 , 7 , 8 , 9 , 100 , 0},
                {
            0 , 0 , 0 , 0 , 0 , 0 , 0}
            };
            如果用x=0...6,y=1...7,則變換i=7x+y與矩陣中每個(gè)元素位置與(x,y)唯一對(duì)應(yīng),也就是x選擇行,y選擇列,
            如果x和y都是均勻分布,那么這49個(gè)位置有相同的被選中的概率=1/49。下面這行代碼實(shí)現(xiàn)了這個(gè)變換:
            = 7 * (rand7() - 1+ rand7();
            其中7*(rand7()-1)相當(dāng)于選擇種子矩陣中的行,第二個(gè)rand7相當(dāng)于選擇列,而最后的模10+1運(yùn)算,就恰好生成了矩陣中每個(gè)元素的值,但是(i>40)這個(gè)循環(huán)條件把最后的9個(gè)值變?yōu)榱?。因此代碼1等價(jià)于在種子矩陣中做選擇

            再來(lái)看,在這個(gè)矩陣中1-10數(shù)字一共出現(xiàn)了40次,每個(gè)數(shù)字出現(xiàn)4次,0出現(xiàn)了9次。我們?cè)谶@個(gè)表里篩選,如果選中了0則重新選一次,如果非0則返回結(jié)果,那么1-10恰好可以得到平均機(jī)會(huì)。(更理論也更準(zhǔn)確地說(shuō),這是一個(gè)條件概率。我們看一下在不選0的前提下選擇到1的概率,令B=不選擇零,A=選擇到1,那么 P(A)=4/49,P(B)=40/49. 因?yàn)橹灰x擇到1,B就必然成立,所以P(B|A)=1,令P(A|B)=在不選擇零的前提下選擇到1的概率,則根據(jù)Bayes公式 P(A|B)=P(B|A)*P(A)/P(B)=4/40=1/10. 其他的數(shù)字也都可以得出這個(gè)結(jié)論,因此,在不選擇0的前提下,1-10的概率都=1/10。)

            因此有代碼2:
                int result = 0;
                
            while (!result)
                    result 
            = seed7[rand7() - 1][rand() - 1];
             
                
            return result;

            顯然,代碼1與代碼2是等價(jià)的。我個(gè)人更喜歡代碼2,因?yàn)榭臁L煜挛涔Γ▓?jiān)不催,唯快不破。

            舍去法效率的分析

            現(xiàn)在看看rand7被調(diào)用的次數(shù)——這主要是由舍去率(或者反過(guò)來(lái)命中率決定的)。這兩個(gè)代碼每生成一個(gè)隨機(jī)數(shù)調(diào)用rand7的次數(shù)不確定,那么平均調(diào)用了多少次呢?種子矩陣中選擇一次,命中非0的概率有40/49,命中0的概率是9/49,這個(gè)過(guò)程是一個(gè)伯努利實(shí)驗(yàn),進(jìn)行n次選取平均(期望值)可以選出n*40/49個(gè)非0,因此生成100個(gè)非0就需要平均調(diào)用n*40/49>=100次,也就是n=100*49/40=122.5. 生成一個(gè)隨機(jī)數(shù)需要進(jìn)行兩次選取,這意味著平均調(diào)用rand7的次數(shù)為2*1.225=2.45次。盡管生成一個(gè)隨機(jī)數(shù)調(diào)用rand7的次數(shù)并不確定,但是平均調(diào)用不到2.5次,這個(gè)效率還是不錯(cuò)的。
            代碼2用7*7的內(nèi)存替換了代碼1的模10運(yùn)算,犧牲了空間以換來(lái)更高的速度。

            舍去法還有其他很多種構(gòu)造方法。網(wǎng)友談?wù)摰谋容^多的是構(gòu)造rand2+rand5構(gòu)造,以及rand2+rand14構(gòu)造。方法如下:

            rand2+rand5: 先構(gòu)造rand2,然后構(gòu)造rand5,利用如果rand2==1,則返回1-5,如果rand2==2,則返回rand5+5。
            rand2+rand7: 先構(gòu)造rand2,然后構(gòu)造rand14,利用如果rand2==1,則返回1-7,如果rand2==2,則返回rand7+7。最后再舍去4個(gè)數(shù)字,最后得到rand10。

            rand2的構(gòu)造方法,目前我所知道最好的方法是1/7的舍去率:1-7中奇數(shù)多一個(gè),舍去一個(gè)奇數(shù),再讓奇數(shù)對(duì)應(yīng)1,偶數(shù)對(duì)應(yīng)2,這樣就得到了rand2。rand7->rand5的舍去率是2/7,rand14->rand10的舍去率是4/14,因此這兩種方法的總舍去率都是1/7+2/7=3/7=0.429. 而代碼1和代碼2做兩次rand7運(yùn)算,每次的舍去率是9/49,因此總舍去率為18/49=0.367,略優(yōu)于這兩種算法。

            2. 直接法——利用rand7做計(jì)算

            由于舍去法每次調(diào)用rand7的次數(shù)未知,所以希望能夠找到一種直接的方法。當(dāng)然最直接的方法就是用線性同余這樣的隨機(jī)數(shù)生成法直接寫(xiě)一個(gè),但是這就用不上rand7了,與題意不符合。有人希望用rand7的各種組合計(jì)算來(lái)完成,比如(rand7+rand7+rand7+...)%10+1或者(rand7*rand7*rand7*...)%10+1,有些計(jì)算確實(shí)能夠達(dá)到很好的均勻度,但卻是近似均勻

            從統(tǒng)計(jì)學(xué)的角度看, 一個(gè)rand7就相當(dāng)于符合均勻分布的隨機(jī)變量X1,當(dāng)n個(gè)rand7做運(yùn)算的時(shí)候,相當(dāng)于X1...Xn是符合均勻分布的邊緣隨機(jī)變量,而F(X1, X2,...,Xn)是他們的聯(lián)合分布,這個(gè)分布并非是均勻的,甚至很復(fù)雜,如果不用窮舉法,幾乎沒(méi)有簡(jiǎn)便的方法計(jì)算每個(gè)數(shù)字出現(xiàn)的概率。現(xiàn)在要將多隨機(jī)變量的F(X1,X2,...,Xn)映射到1到10的均勻分布,顯然是有一定難度的, 而在本題來(lái)說(shuō),是不可能的,這是因?yàn)椋?/div>

            1) 對(duì)rand7的一元運(yùn)算只能有7種結(jié)果,不可能產(chǎn)生10個(gè)隨機(jī)數(shù)
            2) 現(xiàn)在有二元運(yùn)算(X)可以是加減乘除或者任何函數(shù)任何映射關(guān)系,rand7(X)rand7的可能運(yùn)算方式是7*7種,,n次二元(X)運(yùn)算后的可能是運(yùn)算方式是7^(n+1)種,現(xiàn)在要用7^(n+1)種運(yùn)算過(guò)程得到均勻的10種結(jié)果,這是不可能的,(因?yàn)?^(n+1)不能被10整除),所以只能是近似均勻

            下面來(lái)看怎樣獲得近似的均勻,
            ju136提醒我注意到,其中的一個(gè)比較好的方法是:
            (rand7()+rand7()+rand7()+rand7()+rand7()+rand7()+rand7()+rand7()+rand7()+rand7())%10+1
            他獲得的均勻度非常好,1出現(xiàn)的最多,5出現(xiàn)的最少,但是概率上僅僅相差0.00002,人類(lèi)的感覺(jué)已經(jīng)分辨不出來(lái)了。但是這個(gè)方法需要調(diào)用10次rand7,效率上差一些。

            有人希望用這樣的方法:調(diào)用兩次rand7從而生成一個(gè)7進(jìn)制的數(shù),然后轉(zhuǎn)換成0-49,剛好是50個(gè)數(shù)的均勻分布,再取模10。這個(gè)方法貌似可行,可是很遺憾的是,這樣生成的7進(jìn)制0-66對(duì)應(yīng)到10進(jìn)制是0-48,而不是49,少了一個(gè)數(shù)。

            下面這個(gè)方法也比較好,(rand7+(rand7+7) +(rand7+14)+...+(rand7+42))%10,這個(gè)表達(dá)式生成7個(gè)隨機(jī)數(shù),分別均勻分布在1-7,8-14,...7個(gè)區(qū)間,相加之后再做模10運(yùn)算,映射到0-9這10個(gè)數(shù)字。這7^7種運(yùn)算,統(tǒng)計(jì)每個(gè)數(shù)字可以得到次數(shù),其中5最高,0最低,但是他們幾率的差僅為0.00041,人的感覺(jué)幾乎分辨不出來(lái)了。這個(gè)方法需要調(diào)用7次rand7,效率比上面的代碼高一些,因此有:
            代碼3
                int rand10_7plus()  
                {  
                    
            return (rand7()+rand7()+rand7()+rand7()+rand7()+rand7()+rand7()+147)%10+1;  
                }

            這種直接方法,無(wú)論怎樣在理論上都做不到均勻分布,所以,我們要想一些辦法來(lái)提高。

            3. 直接法——利用組合方法進(jìn)一步提高

             考慮數(shù)組
            {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
            {6, 5, 4, 3, 2, 1, 10, 9, 8, 7 }

            用rand7_plus在第一行中選擇的時(shí)候6的機(jī)會(huì)最大,1的機(jī)會(huì)最小,但是在第二行選擇的時(shí)候1的機(jī)會(huì)最大,6的機(jī)會(huì)最小,這兩行有一定的互補(bǔ)性,所以如果輪流選擇這兩行,會(huì)得到更均勻的分布,根據(jù)上面的計(jì)數(shù)結(jié)果,可以得知,最小幾率與最大幾率的差僅為萬(wàn)分之一。推廣一下,如果在數(shù)組
                int seed10[10][10= {  
                    {
            1,  2,  3,  4,  5,  6,  7,  8,  9,  10},  
                    {
            101,  2,  3,  4,  5,  6,  7,  8,  9},  
                    {
            9,  101,  2,  3,  4,  5,  6,  7,  8 },  
                    {
            8,  9,  101,  2,  3,  4,  5,  6,  7 },  
                    {
            7,  8,  9,  101,  2,  3,  4,  5,  6 },  
                    {
            6,  7,  8,  9,  101,  2,  3,  4,  5 },  
                    {
            5,  6,  7,  8,  9,  101,  2,  3,  4 },  
                    {
            4,  5,  6,  7,  8,  9,  101,  2,  3 },  
                    {
            3,  4,  5,  6,  7,  8,  9,  101,  2 },  
                    {
            2,  3,  4,  5,  6,  7,  8,  9,  101 },  
                };
            之中,依次在每一行用rand10_7plus選擇,由于每個(gè)數(shù)字出現(xiàn)的幾率均等,并且在每行和每列上出現(xiàn)的幾率均等,在多次調(diào)用之后就可以得到均勻分布。
            代碼4
                unsigned int gi = 0;  
                
            int rand10_matrix()  
                {  
                    
            //用rand10_7plus生成一個(gè)數(shù),選擇列  
                    int n = rand10_7plus() - 1;  
                    
            //輪流選擇seed10的行  
                    return seed10[gi++ % 10][n];  
                }

            如果利用模運(yùn)算的循環(huán)性質(zhì),就不需要seed10這個(gè)矩陣,可以驗(yàn)證下面的代碼與rand10_matrix是等效的:
            代碼5
                unsigned int gi = 0;  
                
            int rand10_mod()  
                {  
                    
            return ((rand10_7plus() - 1+ gi++% 10 + 1;  
                }
            這個(gè)算法每次調(diào)用7次rand7,做一次模運(yùn)算,不需要額外的內(nèi)存以及循環(huán),從統(tǒng)計(jì)意義上說(shuō),已經(jīng)是個(gè)比較好的偽隨機(jī)數(shù)生成器。

            4. 隨機(jī)數(shù)測(cè)試
            最初我在些這個(gè)文章的時(shí)候,在測(cè)試方面出了問(wèn)題,所以在這里強(qiáng)調(diào)兩點(diǎn):

            1). 隨機(jī)度測(cè)試,需要每隔10次調(diào)用計(jì)數(shù)一次,以驗(yàn)證每個(gè)數(shù)字在各個(gè)位置上出現(xiàn)的次數(shù)是均等的。
            代碼要與如下類(lèi)似:
                for (k = 0; k < 100000; k++) {  
                    n 
            = 0;  
                    
            for (j = 0; j < 10; j++)  
                        n 
            = rand10_7plus10();  
                  
                    result[n 
            - 1]++;  
                }
            注意result[n - 1]++是在j=0~10這個(gè)循環(huán)之外的。

            2). 概率計(jì)算
            在編寫(xiě)代碼之前,一定要先證明1-10的均勻分布。例如前面10個(gè)rand連加的算法,在人的感覺(jué)之中已經(jīng)分辨不出來(lái)概率的差別了,因此需要仔細(xì)統(tǒng)計(jì)一下10個(gè)數(shù)字,寫(xiě)一個(gè)簡(jiǎn)單的10層循環(huán)計(jì)數(shù)就可以了。很多朋友忽視了這點(diǎn),并且,我們上面在第2小節(jié)證明了這是不可能做到均勻的。如果想不清楚或者很難證明你的方法,于是這個(gè)最簡(jiǎn)單的代碼就非常有用:
                for (i1 = 1; i1 <= 7; i1++)  
                
            for (i2 = 1; i2 <= 7; i2++)  
                  
                
            for (i10 = 1; i10 <= 7; i10++)  
                    result[(i1 
            + i2 +  + i10) % 10]++;  

            5. 直接法——分布變換與連續(xù)隨機(jī)變量的分布——更實(shí)際的應(yīng)用

            除了這道題的一些技巧,題目本身在實(shí)戰(zhàn)中沒(méi)有任何應(yīng)用,比較實(shí)際的問(wèn)題是,假設(shè)一個(gè)班的學(xué)生成績(jī)符合正態(tài)分布,如何模擬生成考試成績(jī)。

            我們先看如果rand7是1-7的連續(xù)均勻分布,如何獲得1-10的均勻分布。答案很簡(jiǎn)單,從幾何的角度上看,我們可以把[a,b]線段上的點(diǎn)按照一對(duì)一映射到另一個(gè)線段[c,d]上去,只需要做一個(gè)線性變換y=(x-a)/(b-a)*(d-c)+c. 那么,若x=rand()~U(a,b),則y=~U(c,d),也就是如果rand()是a到b上的均勻分布,則y=(d-c)(x-a)/(b-a)+c是c到d上的均勻分布。對(duì)于本例rand10=(rand()-1)/6*9+1. 下面是證明,更一般的情況同理可證:

            另外有一個(gè)重要的定理來(lái)表明變換之后的分布。這可以處理如Y=X^2, Y=e^X等多種變換。定理如下:

            這個(gè)定理還可以更強(qiáng)一些,f(x)是分段還是也可以,甚至只是一個(gè)覆蓋(包括)就可以了。從符合一種分布的隨機(jī)數(shù)生成另外一種分布的隨機(jī)數(shù)是統(tǒng)計(jì)模擬的課題,其中有非常有趣的變換方法,例如,如果X是(0,1)上的均勻分布,則Y=-a*log(X)是指數(shù)分布。

            現(xiàn)在來(lái)回答如何按照正態(tài)分布模擬生成一個(gè)班的學(xué)生成績(jī)。這個(gè)方法被稱(chēng)為Box-Muller算法,如果U1和U2服從 (0,1)區(qū)間的均勻分布,做變換R=sqrt(-2*logU1), alpha=2*pi*U2,則X=Rcos(alpha)和Y=Rsin(alpha)是一對(duì)獨(dú)立的 標(biāo)準(zhǔn)正態(tài)分布n(0,1)。證明從略。按照這個(gè)方法,C語(yǔ)言的rand(),可以模擬生成近似的(0,1)均勻分布,只要rand()/MAX_RAND就可以了,做Box-Muller變換到n(0,1),就可以做出符合學(xué)生成績(jī)分布了,概率統(tǒng)計(jì)課的基礎(chǔ)內(nèi)容就有。

            6. 其他方法

            舍去法也是非常重要的一類(lèi)隨機(jī),用來(lái)生成各種分布的隨機(jī)數(shù),另外的方法:比如Metropolis算法,比較著名的還有Markov Chain Monte Carlo (MCMC)算法,這類(lèi)方法可以看成是一個(gè)黑盒子,要求在算法內(nèi)部通過(guò)幾次運(yùn)算很快收斂到一種概率分布,然后返回一個(gè)隨機(jī)數(shù)。

            7. 參考文獻(xiàn)
            [2] Kunth第2卷Seminumerical Algorithms, Random Numbers.

            posted on 2011-10-09 00:22 畢達(dá)哥拉斯半圓 閱讀(6253) 評(píng)論(9)  編輯 收藏 引用

            評(píng)論

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論[未登錄](méi) 2011-10-08 22:22 leo

            任何有ran()+ran()的方法都是不行的,
            就像扔2枚骰子,和為2和6的概率是不相同的  回復(fù)  更多評(píng)論   

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論 2011-10-09 08:40 hyp

            上面1-10每個(gè)數(shù)字出現(xiàn)了10次,0出現(xiàn)了9次,我們?cè)谶@個(gè)表里篩選,如果選中了0則重新選一次,如果非0則返回結(jié)果。

            LZ,這里有筆誤吧,seed7[7][7]的數(shù)組怎么可能1-10每個(gè)數(shù)字出現(xiàn)十次?  回復(fù)  更多評(píng)論   

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論 2011-10-09 10:38 coolypf

            @leo
            多加幾次,可以得到正態(tài)分布。  回復(fù)  更多評(píng)論   

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論 2011-10-09 10:48 畢達(dá)哥拉斯半圓

            @hyp
            是噠,應(yīng)是一共出現(xiàn)了40次,每個(gè)4次。多謝啦!  回復(fù)  更多評(píng)論   

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論 2011-10-09 12:12 畢達(dá)哥拉斯半圓

            @coolypf
            離散均勻分布相加得到的是多項(xiàng)式分布,多元隨機(jī)變量。  回復(fù)  更多評(píng)論   

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論 2011-10-10 09:11 zzz9413

            要站在模塊和設(shè)計(jì)的思想上,才能得出。我不是唯一正確的,但可以保證正確易于大家理解。
            說(shuō)明:所有隨機(jī)數(shù)從1開(kāi)始,不是從0開(kāi)始

            1:從rand_7到rand_10
            小隨機(jī)直接產(chǎn)生大隨機(jī)難

            2:那么從rand_14到rand_10容易
            只需要判斷rand_14是否在10以內(nèi),不在則繼續(xù)rand_14直到在10內(nèi),顯然這個(gè)數(shù)在10以內(nèi)是均勻的

            3,現(xiàn)在構(gòu)造rand_14
            rand_7套rand_2循環(huán)即可,rand_2==1,則返回rand_7。rand_2==2則返回rand_7+7,rand_2由第2步分析非常易得。

            4,rand_14到rand_10,由第2步分析即得。
              回復(fù)  更多評(píng)論   

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論 2011-10-10 09:13 zzz9413

            其他的構(gòu)造rand_2和rand_5
            然后套循環(huán)變成rand_10,都是換湯不換藥,不具有普遍性
              回復(fù)  更多評(píng)論   

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論 2011-10-10 09:56 畢達(dá)哥拉斯半圓

            @zzz9413
            這個(gè)方法也很好,不過(guò)效率可能稍微差一點(diǎn)。rand2最好的實(shí)現(xiàn)方法(就我目前所知)是1/7的舍去率,rand14->rand10的舍去率是4/14,這兩步相加就是 6/14的舍去率,將近一半。所以調(diào)用的rand7的次數(shù)也會(huì)比較多。 不過(guò)這提醒我把這個(gè)分析加到正文里去,多謝!  回復(fù)  更多評(píng)論   

            # re: 由rand7生成rand10以及隨機(jī)數(shù)生成方法的討論 2011-10-10 10:18 畢達(dá)哥拉斯半圓

            @zzz9413
            我在正文里評(píng)估了rand2+rand5和rand2+rand14,請(qǐng)您指點(diǎn),多謝!  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2012年12月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導(dǎo)航

            統(tǒng)計(jì)

            • 隨筆 - 7
            • 文章 - 0
            • 評(píng)論 - 44
            • 引用 - 0

            常用鏈接

            留言簿(3)

            隨筆檔案

            相冊(cè)

            contact

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            色欲综合久久躁天天躁| 99re这里只有精品热久久| 欧美久久久久久精选9999| 亚洲狠狠婷婷综合久久蜜芽| 久久精品国产亚洲av麻豆小说 | 精品久久人人妻人人做精品 | 久久99国产一区二区三区| 丁香五月网久久综合| 日韩av无码久久精品免费| 无码伊人66久久大杳蕉网站谷歌 | 蜜桃麻豆www久久| 精品久久久久久久| 色偷偷888欧美精品久久久| 91精品国产高清久久久久久io | 久久精品无码一区二区三区日韩| 国产精品免费久久久久影院| 国产高清美女一级a毛片久久w| 亚洲综合婷婷久久| 久久天天躁狠狠躁夜夜不卡| 久久久久综合国产欧美一区二区| 久久久噜噜噜久久中文字幕色伊伊| 国内精品久久久久久麻豆 | 久久99精品久久久久久久久久| av无码久久久久久不卡网站| 国产亚洲欧美精品久久久| 久久久国产精品福利免费| 国内精品欧美久久精品| 少妇熟女久久综合网色欲| 人妻精品久久久久中文字幕69 | 亚洲愉拍99热成人精品热久久| 777午夜精品久久av蜜臀| 久久99精品久久久久久| 精品多毛少妇人妻AV免费久久| 午夜视频久久久久一区| 久久婷婷五月综合97色| 亚洲一区二区三区日本久久九| 婷婷久久综合九色综合九七| 久久久久久久亚洲Av无码| 国产精品欧美久久久久天天影视| 婷婷国产天堂久久综合五月| 精品熟女少妇av免费久久|