免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
什么是洗牌算法

作者: Great Eagle


問題

小E最近在設計一款斗地主小游戲,為了保證發(fā)到玩家手中的牌具有隨機性,小E必須對現(xiàn)實世界中的洗牌過程進行模擬??此坪唵蔚囊粋€問題,卻難住了小E。

于是,小E向老師請教。

思路

點評:上面即為洗牌算法的思想,其本質是對數(shù)組元素進行隨機重排。數(shù)組中每個元素經(jīng)過洗牌算法后落在數(shù)組某個位置上的概率是相等的,洗牌算法在牌類游戲中非常有用。我們最終將算法的時間復雜度優(yōu)化到了O(n),空間復雜度優(yōu)化到了O(1)。

代碼實現(xiàn)

下面是作者用JavaScript實現(xiàn)的代碼,僅供參考?。ńㄗh大家自己動手實現(xiàn)一遍)

//對數(shù)組中的元素進行隨機重新排列,并返回
//arr:數(shù)組
function shuffle(arr) {
    for(let i = arr.length - 1; i >= 0; i--) {
        //隨機從0-i中選擇一個下標
        let randomIndex = Math.floor(Math.random() * (i + 1));
        //將選中的元素與arr[i]交換
        let t = arr[randomIndex];
        arr[randomIndex] = arr[i];
        arr[i] = t;
    }
    //返回隨機重排后的數(shù)組
    //隨機重排過程發(fā)生在原數(shù)組上,并未產(chǎn)生新數(shù)組
    return arr;
}

溫馨提示:可左右滑動

復制代碼請前往https://blog.csdn.net/Great_Eagle/article/details/84839932

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JS取出兩個數(shù)組的不同或相同元素
前端筆試題——數(shù)組去重(保姆級手撕)
【游戲概率】游戲中的常見概率設計分析,游戲概率常用算法整理
洗牌算法
JavaScript:十大排序的算法思路和代碼實現(xiàn)
前端筆試題——手撕快速排序(保姆級手撕)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服