如何在Coffescript中对数组进行洗牌?
答案 0 :(得分:0)
github(已修改):
fisherYates = (arr) ->
i = arr.length
return arr unless i > 0
while --i
j = Math.floor(Math.random() * (i+1))
[arr[i], arr[j]] = [arr[j], arr[i]] # use pattern matching to swap
答案 1 :(得分:0)
我的表格在我测试时给了我意想不到的行为。 这种方式对我有用。
shuffle_array = (arr) ->
i = arr.length
while --i
j = Math.floor(Math.random() * (i+1))
[arr[i], arr[j]] = [arr[j], arr[i]]
return arr unless i > 0
干杯。
答案 2 :(得分:0)
Array::shuffle = ->
a=@
i=a.length
while i>0
int=Math.floor(Math.random()*i)
i--
o=a[i]
a[i]=a[int]
a[int]=o
a
console.log([1..10].shuffle())