Hướng dẫn is there a shuffle method in javascript? - có phương pháp xáo trộn trong javascript không?
Shuffle mảng tại chỗ Show
Es6 tinh khiết, lặp đi lặp lại
Kiểm tra độ tin cậy và hiệu suất Một số giải pháp trên trang này không đáng tin cậy (chúng chỉ ngẫu nhiên một phần cho mảng). Các giải pháp khác ít hiệu quả hơn đáng kể. Với 2 (xem bên dưới), chúng tôi có thể kiểm tra các chức năng xáo trộn cho độ tin cậy và hiệu suất.
Các giải pháp khácCác giải pháp khác chỉ để giải trí. ES6 thuần khiết, đệ quy
ES6 thuần khiết sử dụng mảng.map
ES6 thuần túy bằng cách sử dụng mảng.Reduce Giải pháp đơn giản có thể là:
Điều đó có phần hoạt động, bởi vì 3 là một số ngẫu nhiên có thể dương hoặc âm, do đó, hàm sắp xếp sắp xếp lại các yếu tố một cách ngẫu nhiên.Nhưng vì hàm sắp xếp không có nghĩa là được sử dụng theo cách này, không phải tất cả các hoán vị đều có cùng một xác suất. Ví dụ, hãy xem xét mã dưới đây. Nó chạy 4 1000000 lần và tính xuất hiện của tất cả các kết quả có thể có:
Một kết quả ví dụ (phụ thuộc vào động cơ JS):
Chúng ta có thể thấy sự thiên vị rõ ràng: 5 và 6 xuất hiện thường xuyên hơn nhiều so với những người khác.Kết quả của mã có thể khác nhau giữa các công cụ JavaScript, nhưng chúng ta đã có thể thấy rằng phương pháp này là không đáng tin cậy. Tại sao nó không hoạt động? Nói chung, 7 là một hộp đen của người Hồi giáo: Chúng tôi ném một mảng và một hàm so sánh vào đó và mong đợi mảng sẽ được sắp xếp. Nhưng do sự ngẫu nhiên hoàn toàn của so sánh, hộp đen phát điên, và chính xác nó phát điên như thế nào phụ thuộc vào việc thực hiện cụ thể khác nhau giữa các động cơ.Có những cách tốt khác để làm nhiệm vụ. Chẳng hạn, có một thuật toán tuyệt vời có tên là Fisher-Yates Shuffle. Ý tưởng là đi bộ mảng theo thứ tự ngược lại và trao đổi từng phần tử với một phần tử ngẫu nhiên trước nó:
Hãy để thử nghiệm nó theo cùng một cách: 0Ví dụ đầu ra: 1Bây giờ có vẻ tốt: Tất cả các hoán vị xuất hiện với cùng một xác suất. Ngoài ra, thuật toán Fisher-Yates khôn ngoan hơn nhiều, ở đó, không có sự sắp xếp nào trên đầu. Làm thế nào để bạn xáo trộn các mục trong JavaScript?Một phần tử mảng JavaScript có thể được xáo trộn bằng cách sử dụng phương thức sort (). Phương thức Sắp xếp mảng JavaScript () được sử dụng để sắp xếp các phần tử của một mảng. Phương thức chấp nhận hàm so sánh và thực hiện một loại dựa trên giá trị được trả về bởi hàm đó.by using the sort() method. The JavaScript Array sort() method is used to sort the elements of an array. The method accepts a comparison function and performs a sort based on the value returned by that function.
Làm thế nào để bạn xáo trộn một chuỗi trong javascript?Algorithm:.. Đầu tiên, chuyển đổi chuỗi thành một mảng bằng phương thức Split () .. Sau đó, hãy gọi phương thức Sắp xếp () của mảng .. Trong định nghĩa hàm của nó, trả về một giá trị ngẫu nhiên (-ve, 0, +ve) mỗi khi nó được gọi là .. Sau đó, onvert mảng bị xáo trộn trở lại chuỗi bằng phương thức nối () .. Làm thế nào để bạn ngẫu nhiên một mảng trong javascript?Viết chức năng xáo trộn (mảng) mà xáo trộn (sắp xếp lại ngẫu nhiên) các phần tử của mảng.Nhiều lần chạy xáo trộn có thể dẫn đến các đơn đặt hàng khác nhau của các yếu tố.Ví dụ: LET ARR = [1, 2, 3];Shuffle (mảng);// mảng = [3, 2, 1] shuffle (mảng);// mảng = [2, 1, 3] shuffle (mảng);// mảng = [3, 1, 2] // .... Multiple runs of shuffle may lead to different orders of elements. For instance: let arr = [1, 2, 3]; shuffle(arr); // arr = [3, 2, 1] shuffle(arr); // arr = [2, 1, 3] shuffle(arr); // arr = [3, 1, 2] // ...
Bạn có thể xáo trộn một mảng không?Mảng xáo trộn bằng cách sử dụng lớp ngẫu nhiên, chúng ta có thể lặp lại thông qua các phần tử mảng trong một vòng lặp.Sau đó, chúng tôi sử dụng lớp ngẫu nhiên để tạo số chỉ mục ngẫu nhiên.Sau đó hoán đổi phần tử chỉ mục hiện tại với phần tử chỉ mục được tạo ngẫu nhiên.Ở cuối vòng lặp, chúng ta sẽ có một mảng bị xáo trộn ngẫu nhiên.
We can iterate through the array elements in a for loop. Then, we use the Random class to generate a random index number. Then swap the current index element with the randomly generated index element. At the end of the for loop, we will have a randomly shuffled array. |