Re: [問題] 隨機排序的問題

看板Fortran作者 (sjgau)時間15年前 (2009/10/20 07:57), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串5/8 (看更多)
※ 引述《mantour (朱子)》之銘言: : 為什麼要洗這麼多次呀 我想,在或然率,機率,統計學裡面, 有所謂的 大數法則。 任何事情,一定要 樣本空間夠大, 才能夠顯示出他的 意義。 . . . : 這樣應該就可以了吧 : ! a(0) ~ a(51) : for i=0,50 : 產生一個 i ~ 51 的亂數 : swap(a(r), a(i)) : 想像成本來是52個人坐一排 : 然後重抽一輪新的座號 就這個 52個人坐成一排的觀念來討論, 你的方法是,從 1號到 52號, 每一個號碼,去抽出一個號碼 n1, 和 n1 座位的人 互換座位。 我的方法是 做 52次,每次抽出兩個號碼 n1, n2 這兩個人 互換座位。 效果,應該是 差不多。 如果要 真正的去 檢討比較 兩個方法的優劣, 有必要去 精通統計學裡面的 檢測技巧, 真正的拿各種檢測方法去 評比優劣。 但是,有這麼 嚴重嗎? 以上 兩個方法,多做個 幾輪, 52*10輪,不就 搞定。 所需要的 CPU time, 不超過 0.1秒 : ※ 引述《sjgau (sjgau)》之銘言: : : 你的意思,應該是 隨機洗牌。 : : 假設你原本的資料有 52筆, : : 存放在 一個 一維陣列 : : integer a(52) : : ! a(1) . . . a(52) : : for i=1 to 300 do : : ! 隨機產生兩個 亂數 n1, n2, >= 1, and <= 52 : : ! 交換 a(n1) 和 a(n2) 的值 : : end do -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.231.77.148

10/20 07:59, , 1F
順便提供一個心得,以目前的 PC, 一秒鐘執行兩億個運算,
10/20 07:59, 1F

10/20 07:59, , 2F
應該沒有問題
10/20 07:59, 2F
文章代碼(AID): #1AtFpdtq (Fortran)
討論串 (同標題文章)
文章代碼(AID): #1AtFpdtq (Fortran)