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

看板Fortran作者 (朱子)時間15年前 (2009/10/19 20:51), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串4/8 (看更多)
為什麼要洗這麼多次呀 這樣應該就可以了吧 ! 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
應該要產生 i~51 , 你的想法方向是對的
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
文章代碼(AID): #1At63lQ- (Fortran)
討論串 (同標題文章)
文章代碼(AID): #1At63lQ- (Fortran)