作者imjeffreylee (jl)
看板Ajax
标题[问题] jQeury shuffle array问题
时间Mon Jan 15 13:52:10 2018
刚学三个礼拜超新手...
先上我的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://webptt.com/cn.aspx?n=bbs/Ajax/M.1515995538.A.635.html
1F:推 shadowjohn: $('#fruit').each(function(i){ --> 怪怪的 #fruit处 01/15 14:11
2F:→ shadowjohn: #fruit是 id,但id应该是唯一值 01/15 14:12
真的耶 不用id就可以了! 感谢shadowjohn!
3F:→ bibo9901: 这是我看过的错误shuffle方法中 最蠢的一种 01/15 14:14
这是我从一个网路上影片里面看来的 请问这样会有什麽问题?
4F:→ bibo9901: 1.这个方法是错的,机率并不平均,你可以自己实验 01/15 14:40
5F:→ bibo9901: 2. 0.5 - rand() 和 rand() 是一样的意思 没有任何意义 01/15 14:42
6F:→ bibo9901: 我讲错了,2.是为了把rand的范围调整至[-1,1] 01/15 14:46
7F:推 Kenqr: shuffle相关的讨论可在板上搜寻这个标题: 01/15 15:20
8F:→ Kenqr: chrome 的 Math.random() 好固定的感觉 01/15 15:20
感谢各位提供意见 我再来研究看看
※ 编辑: imjeffreylee (73.142.228.247), 01/15/2018 23:51:29
9F:推 oToToT: 乱给值是undefined behavior,会出现任何问题都是合理的吧 01/16 00:22
10F:推 oToToT: 话说这样的写法机率是平均的吗? 01/16 00:42
12F:推 Kenqr: 楼上的写法应该是不平均的。 01/16 11:37
13F:→ Kenqr: 假如阵列只有3项,排列组合就会有6种,每种的机率要一样。 01/16 11:37
14F:→ Kenqr: 执行回圈时依照产生的乱数,会出现27种执行过程, 01/16 11:37
15F:→ Kenqr: 27种过程的发生机率相同。 01/16 11:38
16F:→ Kenqr: 27/6无法整除,所以6种排列组合的出现机率是不同的。 01/16 11:38
17F:推 LPH66: oToToT 的方法改一个地方就平均了 01/16 18:11
18F:→ LPH66: var key 那行限定产生出来的 key 大於等於 i 即可 01/16 18:11
19F:→ LPH66: 这样就等同於每次从一叠牌中随机抽一张出来 01/16 18:13
20F:→ shadowjohn: 写个回圈,阵列里的值随机俩俩交换,这种小阵列 01/17 08:36
21F:→ shadowjohn: 随便跑个几十次就乱七八糟了,跟扑克牌一样 01/17 08:36
22F:推 Hevak: Fisher–Yates shuffle 01/17 21:28