Re: [問題] 隨機排序的問題
※ 引述《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
10/20 07:59, 1F
→
10/20 07:59, , 2F
10/20 07:59, 2F
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章