青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

lua的隨機數問題

http://dev.csdn.net/author/yanjun_1982/b682d53ae78846a19eb0b7751a250750.html     

   也許很多人會奇怪為什么使用LUA的時候,第一個隨機數總是固定,而且常常是最小的那個值,下面我就簡要的說明一下吧,說得不好,還請諒解。我現在使用的4.0版本的LUA,看的代碼是5.0的,呵呵

        LUA4.0版本中的自帶函數庫中有兩個關于隨機數的函數,一個是random,一個是randomseed。random有兩個參數,用來設置隨機數的范圍,比如random(1,100)設置隨機數的范圍為1至100之間。由于C中所產生的隨機序列是固定的,并且第一個隨機數比較小,只有41。LUA重新設計了random函數,使得它可以產生范圍固定的隨機數,但由于LUA的random只是封裝了C的rand函數,使得random函數也有一定的缺陷,那就是如果random的兩個輸入參數的值相差很小的時候,那么隨機序列的第一個隨機數就會和第一個輸入參數很接近,比如第一次調用random(1,100)的時候,返回值肯定是1,只有相差大于799時,如random(1,800)第一次調用才會返回2,也是很接近1。
        由于這個原因,為了實現真正的隨機,那么第一次就不能讓玩家調用random函數,不然玩家就可以獲得一些低概率的東西了。比如if random(1,100) == 1 then ...... do,看起來是1%的的概率,但是第一次執行的時候是100%成立的,存在一定的隱患。解決這個問題的方法有兩個,一就是第一次random函數不能讓玩家執行,二就是使用randomseed先設一個隨機種子。對于第一種方法,可能還是有一定的風險,畢竟隨機序列還是固定的,玩家第一次調用random的時候還是得到有規律的返回值。第二種方法比較安全,在服務器啟動的時候設置一個隨機種子,讓系統產生的隨機序列不相同,但使用randomseed的時候也還要注意一個問題,那就是做種子的數要足夠的大,大于10000就行了。不然randomseed所產生的隨機序列的第一個值還是很小。原因是randomseed是直接封裝了C的srand,如果種子的值太小,那么srand所產生的序列和默認序列(srand(1)所產生的序列)是相差不大的,序列的第一個值還是很小。
        因此,只要在服務器啟動的時候調用一下randomseed(GetTime())就可以解決這個問題了。
        還要補充一下,LUA中產生隨機數的算法還是有一些問題,比如執行random(1,3276700),它返回的值最后兩位必為0。這是由LUA本身的隨機函數算法決定的。
        還是簡要介紹一下LUA中random函數的實現方法吧,主要由源碼中的下面兩行實現:
        lua_Number r = (lua_Number)(rand()%RAND_MAX) / (lua_Number)RAND_MAX;
        lua_pushnumber(L, (int)floor(r*(u-m+1))+m);
        其中m為random函數的第一個參數,u為第二個參數。由上面的代碼可以看出,如果u-l太小,那么當r也很小的時候,r*(u-m+1)就會很小(小于1),那么再經過floor運算,最經結果就是m。這就可以解釋為什么random產生的第一個隨機數常常會很接近m。再來看看當m為0,u為327670的時候會怎樣。在上面的代碼里,RAND_MAX是一個宏,它的值是32767,也就是C語言中rand函數可以返回的最大值(不同的操作系統可能會有不一樣的最大值)。當m為0,u為327670的時候,那么返回值就是floor(r*(327671)+0),我們再假設LUA與平臺無關并且rand不會返回32767(上面用%避免了這個問題),那么r就可以簡化為rand()/RAND_MAX,代入上式為floor(rand()*327671/32767)+0,就算rand()的返回值是32766,最終的結果也只有327660.99996......,經過floor運算后,最后那位數必為0。呵呵,我叫這樣的隨機數就偽隨機數中的偽隨機數。實際上面的公式是不允許化簡的,即不能簡單地把r代入r*(u-m+1),至于為什么,呵呵,因為r的值并不是rand()/RAND_MAX的值,r是double類型的,所以它只是一個和rand()/RAND_MAX很接近的數。 

        引用請注明出處。作者:yanjun_1982   日期:2006年10月11日

posted on 2009-05-13 10:58 Brandon 閱讀(2096) 評論(0)  編輯 收藏 引用 所屬分類: 腳本語言

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章分類

文章檔案

收藏夾

IT WEB

常用鏈接

牛人BLOG

學習網站

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产三级精品在线不卡| 欧美美女bb生活片| 国产一区日韩二区欧美三区| 欧美性大战xxxxx久久久| 欧美日韩亚洲一区二| 欧美日韩免费在线| 国产精品福利av| 国产一区二区三区av电影| 在线视频成人| 亚洲色图制服丝袜| 久久久精品国产99久久精品芒果| 久久综合亚洲社区| 亚洲精品日韩激情在线电影 | 国产精品有限公司| 激情综合色综合久久| 亚洲精品一区在线观看香蕉| 亚洲亚洲精品在线观看| 久久精品国产欧美亚洲人人爽| 久久影音先锋| 影音先锋成人资源站| 亚洲激情在线观看视频免费| 亚洲一区二区不卡免费| 久久综合久久综合久久| 亚洲最新在线视频| 久久久久久久久久看片| 欧美日本三级| 好吊色欧美一区二区三区视频| 亚洲精选视频在线| 久久久久久日产精品| 夜夜嗨一区二区| 免费在线国产精品| 国产亚洲va综合人人澡精品| 99这里只有精品| 免费在线欧美黄色| 亚洲免费一区二区| 欧美精品综合| 亚洲国产日韩欧美综合久久| 久久精品国产精品亚洲综合| 99视频超级精品| 欧美成人精品一区| 亚洲第一二三四五区| 久久精品一区二区三区四区| 国产精品99久久久久久白浆小说 | 亚洲亚洲精品在线观看| 欧美国产日本高清在线| 久久精品视频免费观看| 国产麻豆精品theporn| 一区二区三区精品国产| 亚洲高清视频的网址| 午夜免费在线观看精品视频| 欧美性猛交99久久久久99按摩| 亚洲日本欧美| 亚洲电影免费在线观看| 久久免费视频这里只有精品| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲美女少妇无套啪啪呻吟| 久久一区二区三区av| 狠狠久久亚洲欧美专区| 久久久久久久综合狠狠综合| 亚洲欧美第一页| 国产精品尤物| 久久久久国产成人精品亚洲午夜| 亚洲欧洲av一区二区三区久久| 国产精品男人爽免费视频1| 亚洲一区二区3| 亚洲一区二区视频| 国产日韩综合一区二区性色av| 欧美在线播放一区二区| 欧美一区二区免费| 亚洲电影观看| 最新国产乱人伦偷精品免费网站| 欧美精品精品一区| 亚洲一区二区三区久久| 亚洲综合日韩中文字幕v在线| 国产午夜精品一区二区三区视频| 久久精品国产精品亚洲精品| 玖玖玖免费嫩草在线影院一区| 91久久精品一区二区别| 日韩特黄影片| 国产视频一区在线观看| 欧美大片91| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 亚洲三级性片| 99精品国产在热久久| 国产精品网红福利| 蜜桃久久精品乱码一区二区| 欧美区国产区| 久久久久久久久久久久久久一区 | 国产精品一区二区久久国产| 久久久久久久性| 欧美精品一区二区三区高清aⅴ| 亚洲女人天堂av| 久久久精品网| 亚洲影院色无极综合| 久久精品视频亚洲| 亚洲尤物在线| 葵司免费一区二区三区四区五区| 中文在线一区| 久久性色av| 欧美自拍丝袜亚洲| 欧美人与性动交α欧美精品济南到| 性视频1819p久久| 欧美激情1区| 免费成人在线视频网站| 国产精品久久久久三级| 欧美高清视频一区二区三区在线观看| 欧美激情一区二区三区成人| 亚洲一区二区三区777| 久久天天躁狠狠躁夜夜av| 午夜激情久久久| 欧美精品一区二区三区在线播放| 久久国内精品自在自线400部| 免费亚洲一区| 另类图片国产| 国产亚洲福利一区| 亚洲视频精选| 亚洲视频网站在线观看| 欧美高潮视频| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品久久久999| 亚洲欧洲日本专区| 亚洲激情欧美| 久久亚洲影院| 蜜臀91精品一区二区三区| 国产色综合久久| 亚洲欧美一区二区原创| 亚洲午夜精品一区二区三区他趣| 免费欧美电影| 亚洲国产成人精品女人久久久| 激情文学综合丁香| 久久国产精品99精品国产| 欧美在线免费观看| 国产精品久久久久久五月尺| 中国成人亚色综合网站| 亚洲综合99| 国产精品系列在线| 午夜精品久久久久久久白皮肤| 午夜精品久久久久久久男人的天堂 | 欧美福利一区| 亚洲人成网站777色婷婷| 亚洲高清一二三区| 你懂的视频欧美| 最新日韩中文字幕| 99re热精品| 欧美亚州韩日在线看免费版国语版| 亚洲精品一区二区三区不| 一本到12不卡视频在线dvd| 欧美日韩mp4| 亚洲一区bb| 久久久久国产精品一区三寸| 影院欧美亚洲| 欧美女人交a| 亚洲午夜日本在线观看| 欧美在线短视频| 伊人久久大香线| 欧美国产精品专区| 一区二区精品在线| 久久激情综合| 亚洲日韩第九十九页| 欧美日韩亚洲一区三区| 亚洲欧美激情在线视频| 蜜桃精品久久久久久久免费影院| 亚洲三级网站| 国产美女一区二区| 久久中文字幕一区| 一本色道久久综合一区| 久久久亚洲国产美女国产盗摄| 亚洲国产日韩在线| 国产精品久久午夜夜伦鲁鲁| 久久久蜜桃一区二区人| 99re6热在线精品视频播放速度| 亚洲激情成人网| 久久久久久久综合狠狠综合| 亚洲激情电影中文字幕| 欧美视频在线观看免费| 欧美在线亚洲| 亚洲日本中文字幕免费在线不卡| 欧美一级理论性理论a| 亚洲国产精品va在看黑人| 国产精品久久福利| 欧美va天堂| 欧美伊人久久久久久久久影院 | 久久国产精品久久久| 亚洲三级色网| 狠狠久久亚洲欧美| 国产精品99一区| 欧美不卡三区| 久久久国产成人精品| 亚洲视频在线播放| 亚洲狠狠丁香婷婷综合久久久| 久久精品日韩一区二区三区| 亚洲图片在线| 一本久久综合| 日韩视频一区二区三区| 精品成人乱色一区二区| 国产一区二区三区精品久久久 | 国产综合久久久久久鬼色| 欧美日韩久久精品| 欧美激情乱人伦| 女主播福利一区|