中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 多媒體制作 > 關(guān)于隨機(jī)打亂數(shù)組的深入研究
網(wǎng)頁中嵌入Flash的方法討論 回到列表 flash組件開發(fā)要點(diǎn)
 關(guān)于隨機(jī)打亂數(shù)組的深入研究

作者:hack86 時(shí)間: 2006-11-21 文檔類型:原創(chuàng) 來自:藍(lán)色理想

hack86的個(gè)人網(wǎng)站:http://as.hack86.cn

這幾天看到網(wǎng)絡(luò)上在討論關(guān)于隨機(jī)打亂數(shù)組的問題!發(fā)現(xiàn)很多朋友的都有自己的方法,但是否真正的隨機(jī)了呢?這個(gè)問題的爭議一直很大,我在總結(jié)后,以及對Array.sort()內(nèi)部構(gòu)造的猜測后發(fā)現(xiàn),還是有很多不是太完美的地方,所以我經(jīng)過思考還是寫了一套關(guān)于自己的數(shù)組隨機(jī)打亂的函數(shù),希望與大家分享一下!

好了,言歸正轉(zhuǎn),來看看我們的三個(gè)函數(shù),分別是:

  • randomArray(arrLen) 功能為:產(chǎn)生一個(gè)完全隨機(jī)的數(shù)組,參數(shù)為數(shù)組的長度.
  • randomIndex(arrLen) 功能為:根據(jù)參數(shù)產(chǎn)生一個(gè)數(shù)組,從0起到長度-1的所有自然數(shù)隨機(jī)打亂
  • randomSort(arr) 功能為:隨機(jī)打亂一個(gè)數(shù)組中所有值的順序.

首先是隨機(jī)數(shù)組,這是最簡單的一個(gè)函數(shù),來看一下代碼!

function randomArray(arrLen) {
    var rArr:Array = new Array(arrLen);
    for (var i = 0; i<arrLen; i++) {
        rArr[i] = Math.random();
    }
    return rArr;
}

是不是很簡單,我相信不用過多的解釋!函數(shù)返回的rArr這個(gè)數(shù)組里的所有數(shù)都是放射性隨機(jī)的,所以將來會(huì)很有用的!另外值得說明的就是用Math類產(chǎn)生的隨機(jī)數(shù),客觀上是不可能會(huì)有任何重復(fù)的,因?yàn)楦怕市〉膸缀蹩梢酝耆雎?即使數(shù)組長度為千百萬以上!

其次我們來看看,建立隨機(jī)索引的過程:

function randomIndex(arrLen) {
    var iArr:Array = new Array(arrLen);
    var rArr = randomArray(arrLen);  //建立隨機(jī)數(shù)組,以備使用
    for (var i = 0; i<arrLen; i++) {  //遍歷數(shù)組,尋找最小的數(shù)字
        iArr[i] = i;  //默認(rèn)被比較的數(shù)字為最小數(shù)字,并記錄索引
        var t = rArr[i];  //記錄該數(shù)字在臨時(shí)變量中
        for (var j = 0; j<arrLen; j++) {  //與所有數(shù)字進(jìn)行比較
            if (rArr[j]<t) {  //如果發(fā)現(xiàn)更小的數(shù)字,則更新
                iArr[i] = j;
                t = rArr[j];
            }
        }
        delete t;
        rArr[iArr[i]] = 1;  //將最小的數(shù)字設(shè)置成1.
    }
    return iArr;
}

簡單說一下原理吧:隨機(jī)數(shù)組中的所有數(shù)字的大小全是不確定的,相互之間也是不確定的!任何一個(gè)數(shù)字都可能最大,也都可能最小,所以每次都會(huì)產(chǎn)生不同的序列,那么他們排序后索引就會(huì)被完全打亂,由此也起到了真正的隨機(jī)效果!值得一提的是其中rArr[iArr[i]]=1;是因?yàn)镸ath.random();不可能出現(xiàn)1,也就是說任何數(shù)都比1小,也保證的1是最大的,那么修改它后,第二次比較的時(shí)候就會(huì)讓它失去了比較權(quán),因?yàn)樯弦惠喫呀?jīng)是最小的數(shù)了,并且已經(jīng)被記錄過了!相反如果語句if(rArr[j]<t)其中的小于號(hào)改成大于號(hào),最后的值應(yīng)該設(shè)置成0,同樣可以起到放射性隨機(jī)的效果,只是結(jié)果完全相反而已.

現(xiàn)在打亂了所有的索引,最后要做的就是根據(jù)這個(gè)完全隨機(jī)的索引序列,隨機(jī)打亂數(shù)組中所有的值了:

function randomSort(arr) {
    arrLen = arr.length;
    var tArr = new Array(arrLen);  //建立臨時(shí)數(shù)組,存放隨機(jī)打亂的數(shù)組
    var iArr = randomIndex(arrLen);  //建立隨機(jī)索引
    for (var i = 0; i<arrLen; i++) {
        tArr[i] = arr[iArr[i]]; //根據(jù)隨機(jī)索引完全打亂數(shù)組中所有的值
    }
    return tArr;
}

用隨機(jī)索引函數(shù)產(chǎn)生的數(shù)組作為預(yù)被打亂的數(shù)組的新索引,進(jìn)行賦值,即完成了完全打亂的效果!

就此對于隨機(jī)打亂數(shù)組的研究也進(jìn)行完了,希望對喜歡的朋友們有些幫助!

源文件下載

經(jīng)典論壇討論
http://bbs.blueidea.com/thread-2694977-1-3.html

出處:藍(lán)色理想
責(zé)任編輯:moby

◎進(jìn)入論壇Flash專欄版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
網(wǎng)頁中嵌入Flash的方法討論
flash組件開發(fā)要點(diǎn)
臺(tái)灣劉耕名獲得2006ADAA動(dòng)畫大獎(jiǎng)
使用Flash基本工具繪制燈籠
諾基亞N73手機(jī)集成Flash Lite
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開啟
國際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡單繪制一個(gè)可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會(huì)員,你可以注冊 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2