Fisher-Yates Shuffle
Thuật toán xáo trộn mảng ngẫu nhiên hiệu quả, không thiên lệch. Các bước:
- Duyệt mảng từ cuối về đầu (i = length-1 xuống 1).
- Tạo chỉ số ngẫu nhiên
ktừ 0 đếni. - Hoán đổi
arr[i]vàarr[k]. - Lặp lại cho đến i=1.
Ví dụ
<html> <body> <script> var arr = ['A','B','C','D','E','F','G','H']; var i = arr.length, k, temp; while(--i > 0){ k = Math.floor(Math.random() * (i+1)); temp = arr[k]; arr[k] = arr[i]; arr[i] = temp; } document.write(arr); </script> </body> </html>
Kết quả (mẫu)
C,F,H,D,A,G,E,B
Kết quả thay đổi mỗi lần chạy do Math.random().