Re: [問題] 隨機排序的問題
為什麼要洗這麼多次呀
這樣應該就可以了吧
! a(0) ~ a(51)
for i=0,50
產生一個 i ~ 51 的亂數
swap(a(r), a(i))
想像成本來是52個人坐一排
然後重抽一輪新的座號
※ 引述《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
: ※ 引述《janewinnie (逃離)》之銘言:
: : 請問fortran有沒有一個指令是可以將數值隨機排序的?
: : 例如我原本的資料為
: : -3 -3 -3 -3 -3 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1
: : 我想要它隨機排序變成
: : -3 -2 0 -2 1 -1 -3 -3 0 1 -2.......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.213.158
※ 編輯: mantour 來自: 140.112.213.158 (10/19 20:52)
※ 編輯: mantour 來自: 140.112.213.158 (10/19 20:53)
※ 編輯: mantour 來自: 140.112.213.158 (10/19 20:56)
※ 編輯: mantour 來自: 140.112.213.158 (10/19 20:58)
推
10/19 21:21, , 1F
10/19 21:21, 1F
→
10/19 21:23, , 2F
10/19 21:23, 2F
→
10/19 21:23, , 3F
10/19 21:23, 3F
自己推文推得亂了 修一下
我覺得二種方法好像不太一樣
S大的方法是要當洗的次數->無窮大時排出來的順序才不受本來的順序影響
(排出來每張牌在每個位置的機率才會均等)
直接亂數抽新位置,比較能保證每張牌出現在各位置的機率不受本來位置的影響
(不過我沒有質疑S大的意思,
剛剛重看了一下覺得自己第一行語氣不太好真抱歉)
※ 編輯: mantour 來自: 140.112.213.158 (10/19 22:09)
※ 編輯: mantour 來自: 140.112.213.158 (10/19 22:14)
推
10/19 22:45, , 4F
10/19 22:45, 4F
→
10/19 23:07, , 5F
10/19 23:07, 5F
→
10/19 23:07, , 6F
10/19 23:07, 6F
※ 編輯: mantour 來自: 140.112.213.158 (10/19 23:08)
推
10/20 00:44, , 7F
10/20 00:44, 7F
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章