看板 Ajax 關於我們 聯絡資訊
剛學三個禮拜超新手... 先上我的code var cards = ['1.jpg', '2.jpg', ..., '24.jpg']; //array裡面24張圖 var shuffle = function(){ cards.sort(function(){ return .5-Math.random(); }) } //簡易shuffle,在console裡面看是有成功每次順序都不一樣 var assignCards = function(){ $('#fruit').each(function(i){ $(this).attr('src', cards[i]); }) } //想法是把array裡面打亂過後的24張圖放到24個沒有src的<img>裡面 shuffle(); console.log(cards); assignCards(); 問題是每次都只有第一個空的<img>有成功抓到array裡打亂後的第一張圖 後面全部顯示src(unknown) 請問各位可以指點一下嗎? 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.142.228.247 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1515995538.A.635.html
shadowjohn: $('#fruit').each(function(i){ --> 怪怪的 #fruit處 01/15 14:11
shadowjohn: #fruit是 id,但id應該是唯一值 01/15 14:12
真的耶 不用id就可以了! 感謝shadowjohn!
bibo9901: 這是我看過的錯誤shuffle方法中 最蠢的一種 01/15 14:14
這是我從一個網路上影片裡面看來的 請問這樣會有什麼問題?
bibo9901: 1.這個方法是錯的,機率並不平均,你可以自己實驗 01/15 14:40
bibo9901: 2. 0.5 - rand() 和 rand() 是一樣的意思 沒有任何意義 01/15 14:42
bibo9901: 我講錯了,2.是為了把rand的範圍調整至[-1,1] 01/15 14:46
Kenqr: shuffle相關的討論可在板上搜尋這個標題: 01/15 15:20
Kenqr: chrome 的 Math.random() 好固定的感覺 01/15 15:20
感謝各位提供意見 我再來研究看看 ※ 編輯: imjeffreylee (73.142.228.247), 01/15/2018 23:51:29
oToToT: 亂給值是undefined behavior,會出現任何問題都是合理的吧 01/16 00:22
oToToT: 話說這樣的寫法機率是平均的嗎? 01/16 00:42
Kenqr: 樓上的寫法應該是不平均的。 01/16 11:37
Kenqr: 假如陣列只有3項,排列組合就會有6種,每種的機率要一樣。 01/16 11:37
Kenqr: 執行迴圈時依照產生的亂數,會出現27種執行過程, 01/16 11:37
Kenqr: 27種過程的發生機率相同。 01/16 11:38
Kenqr: 27/6無法整除,所以6種排列組合的出現機率是不同的。 01/16 11:38
LPH66: oToToT 的方法改一個地方就平均了 01/16 18:11
LPH66: var key 那行限定產生出來的 key 大於等於 i 即可 01/16 18:11
LPH66: 這樣就等同於每次從一疊牌中隨機抽一張出來 01/16 18:13
shadowjohn: 寫個迴圈,陣列裡的值隨機倆倆交換,這種小陣列 01/17 08:36
shadowjohn: 隨便跑個幾十次就亂七八糟了,跟撲克牌一樣 01/17 08:36
Hevak: Fisher–Yates shuffle 01/17 21:28