Langkau ke kandungan

Pengacak Senarai Rawak - Alat Pengacak Senarai Dalam Talian Percuma

Pengacak senarai rawak percuma menggunakan algoritma Fisher-Yates yang terbukti. Acak serta-merta nama, pelajar, pasukan, atau tugas. Sesuai untuk guru, kejohanan, dan keputusan tidak berat sebelah. Tiada pendaftaran diperlukan.

Pengacak Senarai Rawak

Masukkan item untuk dikocok, satu per baris. Baris kosong akan dialihkan secara automatik.

Kalkulator Pemuatan...
📚

Dokumentasi

Apakah pengacak senarai rawak?

Pengacak senarai rawak ialah alat yang mengambil senarai item dan menyusunnya semula dalam aturan baharu yang rawak. Taipkan nama, tugasan atau apa-apa sahaja, satu item pada setiap baris, dan alat ini akan menyusunnya semula supaya setiap aturan yang mungkin mempunyai peluang yang sama untuk muncul. Alat ini menggunakan pengocokan Fisher–Yates, iaitu algoritma yang terkenal untuk menghasilkan aturan rawak tanpa bias.

Cara menggunakan pengacak senarai rawak

  1. Taip atau tampal senarai ke dalam kotak, satu item pada setiap baris.
  2. Klik "Rawakkan Senarai". Item akan disusun semula serta-merta.
  3. Baca senarai yang telah diacak di bawah butang, bernombor mengikut aturan baharunya.
  4. Klik "Rawakkan Senarai" sekali lagi untuk pengocokan baharu yang bebas.
  5. Klik "Salin Hasil" untuk menyalin aturan baharu, atau "Kosongkan" untuk bermula semula.

Baris kosong dalam input dibuang secara automatik, jadi pemisah baris tambahan tidak akan menghasilkan entri kosong dalam keputusan.

Bagaimanakah algoritma pengocokan Fisher-Yates berfungsi?

Pengocokan Fisher–Yates melalui senarai sekali, bermula pada item terakhir dan bergerak ke arah hadapan. Pada setiap langkah, algoritma ini memilih satu item secara rawak daripada bahagian senarai yang belum ditempatkan, lalu menukarnya ke kedudukan semasa.

Formula pengocokan Fisher-Yates

Bagi senarai yang mempunyai n item, bernombor dari kedudukan 0 hingga kedudukan n − 1:

1for i from n − 1 down to 1:
2    choose a random whole number j, where 0 ≤ j ≤ i
3    swap the items at positions i and j
4

Gelung berjalan sebanyak n − 1 kali, jadi pengocokan itu mengambil kira-kira n langkah secara keseluruhan. Ini dipanggil masa linear, ditulis sebagai O(n). Oleh sebab algoritma ini mempertimbangkan setiap kedudukan tepat sekali dan memilih daripada kumpulan item yang semakin mengecil serta ditakrifkan dengan jelas, setiap satu daripada n! (faktorial n: n × (n − 1) × ... × 1) aturan yang mungkin mempunyai peluang yang sama untuk menjadi hasilnya.

Contoh: mengocok senarai empat item

Mulakan dengan empat item pada kedudukan 0 hingga 3: Apple, Banana, Cherry, Date.

  • i = 3: pilihan rawak ialah j = 0. Tukar kedudukan 3 dan 0 → Date, Banana, Cherry, Apple
  • i = 2: pilihan rawak ialah j = 2. Menukar kedudukan dengan dirinya sendiri tidak mengubah apa-apa → Date, Banana, Cherry, Apple
  • i = 1: pilihan rawak ialah j = 0. Tukar kedudukan 1 dan 0 → Banana, Date, Cherry, Apple

Aturan akhir: Banana, Date, Cherry, Apple.

Dengan empat item, terdapat 4! = 24 aturan yang mungkin. Setiap satu, termasuk aturan ini, mempunyai peluang 1-dalam-24 untuk muncul dalam mana-mana pengocokan.

Mengapa tidak menukar pasangan rawak sahaja?

Kaedah yang kelihatan lebih mudah — pilih dua kedudukan rawak dan tukarkannya, kemudian ulangi beberapa kali — nampak rawak tetapi sebenarnya tidak. Sesetengah program pengocokan awal dari tahun 1950an berfungsi dengan cara ini, lalu secara senyap-senyap memihak kepada aturan tertentu berbanding aturan lain, walaupun tiada satu larian pun kelihatan mencurigakan. Pengocokan Fisher–Yates mengelakkan masalah ini kerana setiap item dipindahkan tepat sekali ke kedudukan yang dipilih daripada set pilihan yang mengecil dengan tepat, dan hal inilah yang menjadikan setiap aturan akhir sama berkemungkinan.

Dari manakah asalnya pengocokan Fisher-Yates?

Ahli statistik Ronald Fisher dan Frank Yates menerangkan kaedah ini pada 1938 dalam sebuah buku jadual statistik, untuk mengocok secara manual ketika mereka bentuk eksperimen. Pada 1964, Richard Durstenfeld menyesuaikannya untuk komputer supaya senarai boleh disusun semula di tempatnya, tanpa memerlukan senarai kedua untuk menjejaki item yang masih ada. Donald Knuth memasukkan versi komputer ini dalam bukunya The Art of Computer Programming pada 1969, sebab itu ia kadangkala dipanggil pengocokan Knuth. Pelayar web menggunakan algoritma yang sama pada masa ini.

Kegunaan biasa pengacak senarai

  • Menetapkan turutan pelajar membuat pembentangan atau menjawab soalan di dalam kelas
  • Menentukan susunan awal kurungan kejohanan atau menetapkan giliran dalam permainan
  • Membahagikan kumpulan kepada pasukan secara rawak
  • Memilih restoran, filem atau tugasan daripada senarai pendek tanpa memihak kepada mana-mana pilihan

Pengocokan biasa tidak semestinya sesuai. Jika sesetengah item perlu muncul lebih kerap daripada item lain, pemilihan berwajaran lebih sesuai. Jika setiap kategori perlu diwakili secara terjamin, persampelan berstrata lebih baik daripada satu pengocokan rawak.

Soalan lazim

Adakah pengocokan ini benar-benar rawak?

Ia bergantung pada penjana nombor pseudorawak (PRNG) pelayar web, iaitu formula yang menghasilkan jujukan nombor yang berkelakuan seperti rawak untuk tujuan praktikal. Itu sudah memadai untuk menetapkan turutan dalam kelas, menentukan susunan awal kejohanan atau memilih filem. Ia tidak direka untuk kriptografi, sistem perjudian atau apa-apa keadaan yang wang atau keselamatannya bergantung pada ketidakbolehramalan; keadaan sedemikian memerlukan penjana nombor rawak yang diperakui.

Adakah alat ini menghantar senarai saya ke pelayan?

Pengocokan itu sendiri dijalankan sepenuhnya dalam pelayar menggunakan JavaScript, jadi tiada permintaan rangkaian diperlukan untuk menyusun semula senarai. Senarai semasa juga ditulis ke dalam alamat web halaman, jadi pemuatan semula atau penanda buku tidak akan kehilangannya. Jika alamat itu disalin, dikongsi atau dibuka semula, senarai tersebut turut disertakan, termasuk kepada mana-mana pelayan yang kemudiannya memuatkan halaman itu. Elakkan memasukkan maklumat sensitif dalam senarai jika perkara ini penting.

Apakah yang berlaku kepada item pendua?

Item pendua dikekalkan. Jika "Sam" muncul dua kali dalam input, ia masih akan muncul dua kali dalam output yang telah diacak, mungkin pada kedudukan yang berbeza.

Adakah terdapat had bilangan item yang boleh saya acak?

Tiada had terbina dalam alat ini. Oleh sebab pengocokan berjalan dalam masa linear, senarai yang panjang sekalipun boleh disusun semula dalam masa kurang daripada satu saat pada mana-mana peranti moden.

Apakah perbezaan antara pengacakan dengan pengisihan?

Pengisihan menyusun item berdasarkan peraturan tetap, seperti susunan abjad, dan sentiasa menghasilkan keputusan yang sama untuk input yang sama. Pengocokan menyusun item secara rawak dan menghasilkan aturan yang berbeza hampir setiap kali, walaupun inputnya sama.

Bolehkah saya mengocok senarai yang sama lebih daripada sekali?

Ya. Setiap klik pada "Rawakkan Senarai" menjalankan algoritma itu sekali lagi, secara bebas daripada pengocokan sebelumnya. Dengan senarai kecil, aturan yang sama boleh berulang secara kebetulan; dengan senarai yang lebih besar, perkara itu menjadi amat tidak mungkin.