[问题] jQeury shuffle array问题

楼主: imjeffreylee (昌)   2018-01-15 13:52:10
刚学三个礼拜超新手...
先上我的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)
请问各位可以指点一下吗? 感恩
作者: shadowjohn (转角遇到爱)   2018-01-15 14:11:00
$('#fruit').each(function(i){ --> 怪怪的 #fruit处#fruit是 id,但id应该是唯一值
作者: bibo9901 (function(){})()   2018-01-15 14:14:00
这是我看过的错误shuffle方法中 最蠢的一种1.这个方法是错的,机率并不平均,你可以自己实验2. 0.5 - rand() 和 rand() 是一样的意思 没有任何意义我讲错了,2.是为了把rand的范围调整至[-1,1]
作者: Kenqr (function(){})()   2018-01-15 15:20:00
shuffle相关的讨论可在板上搜寻这个标题:chrome 的 Math.random() 好固定的感觉
作者: oToToT (屁孩)   2018-01-16 00:22:00
乱给值是undefined behavior,会出现任何问题都是合理的吧话说这样的写法机率是平均的吗?https://codepen.io/oToToT/full/qjZyLe/
作者: Kenqr (function(){})()   2018-01-16 11:37:00
楼上的写法应该是不平均的。假如阵列只有3项,排列组合就会有6种,每种的机率要一样。执行循环时依照产生的乱数,会出现27种执行过程,27种过程的发生机率相同。27/6无法整除,所以6种排列组合的出现机率是不同的。
作者: LPH66 (-6.2598534e+18f)   2018-01-16 18:11:00
oToToT 的方法改一个地方就平均了var key 那行限定产生出来的 key 大于等于 i 即可这样就等同于每次从一叠牌中随机抽一张出来
作者: shadowjohn (转角遇到爱)   2018-01-17 08:36:00
写个循环,阵列里的值随机俩俩交换,这种小阵列随便跑个几十次就乱七八糟了,跟扑克牌一样
作者: Hevak (Arthow Eshes)   2018-01-17 21:28:00
Fisher–Yates shuffle

Links booklink

Contact Us: admin [ a t ] ucptt.com