function
washcard1
(cards)
return cards
}
function
washcard2
(cards)
cards = cardstmp
return cards
}
function
washcard3
(cards)
)return cards
}
var cards =
newarray(54
+1).
join
('0').
split(''
).map(
(item, i)
=> i+1)
console.
log(
washcard1
(cards)
)console.
log(
washcard1([
1,2,
3]))
console.
log(
washcard2
(cards)
)console.
log(
washcard2([
1,2,
3]))
console.
log(
washcard3
(cards)
)console.
log(
washcard3([
1,2,
3]))
多次測試後可以發現 washcard1 並不能完全隨機洗牌,washcard1([1,2,3])並不能把 3 洗到最後。因為每次都會和後面的交換,3一旦被交換到前面就交換不回來了。
測試發現washcard2 才是完全隨機的洗牌演算法。washcard3並不完全隨機,這個就不造為什麼了,可能需要一些概率論的知識做解答。
三種洗牌演算法shuffle
由抽牌 換牌和插牌衍生出三種洗牌演算法,其中抽牌和換牌分別對應fisher yates shuffle和knuth durstenfeld shhuffle演算法。最早提出這個洗牌方法的是 ronald a.fisher 和 frank yates,即 fisher yates shuffle,其基...
三種經典的洗牌演算法
主要有3中經典的洗牌演算法 1.抽牌 1.初始化原始陣列和新陣列,原始陣列長度為n 已知 2.從還沒處理的陣列 假如還剩k個 中,隨機產生乙個 0,k 之間的數字p 假設陣列從0開始 3.從剩下的k個數中把第p個數取出 4.重複步驟2和3直到數字全部取完 5.從步驟3取出的數字序列便是乙個打亂了的數...
使用JS實現三種基本的排序演算法以及三種演算法的比較
function bubblesort arr if arr.length 0 arr.length 1 for let outer arr.length outer 2 outer return arr 選擇排序我們也需要用到巢狀迴圈,演算法思路如下 從陣列的第乙個元素開始,將第乙個元素逐個與其他...