Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thuật toán Fisher-Yates Shuffle trong JavaScript


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:

  1. Duyệt mảng từ cuối về đầu (i = length-1 xuống 1).
  2. Tạo chỉ số ngẫu nhiên k từ 0 đến i.
  3. Hoán đổi arr[i] và arr[k].
  4. 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().