Angka acak tanpa pengulangan

Rumusan masalah

Mari kita asumsikan bahwa kita perlu membuat satu set bilangan acak bilangan bulat tanpa pengulangan dalam rentang nilai tertentu. Contoh saat bepergian:

  • menghasilkan kode acak unik untuk produk atau pengguna
  • menugaskan orang ke tugas (masing-masing secara acak dari daftar)
  • permutasi kata dalam permintaan pencarian (halo seo-shnikam)
  • bermain lotre dll.

Metode 1. Sederhana

Untuk memulainya, mari kita pertimbangkan opsi sederhana: kita perlu mendapatkan 10 bilangan bulat acak dari 1 hingga 10. Menggunakan fungsi bawaan Excel ANTARA KASUS (TEPI ANTARA) keunikan tidak dijamin. Jika Anda memasukkannya ke dalam sel lembar dan menyalinnya ke 10 sel, maka pengulangan dapat dengan mudah terjadi:

Angka acak tanpa pengulangan

Karena itu, kita akan pergi ke arah lain.

Semua versi Excel memiliki fungsi RANK (BERDANGKUNG), dimaksudkan untuk memberi peringkat atau, dengan kata lain, menentukan posisi teratas suatu angka dalam suatu himpunan. Angka terbesar dalam daftar memiliki peringkat = 1, yang kedua di atas memiliki peringkat = 2, dan seterusnya.

Mari kita masukkan fungsi di sel A2 SLCHIS (RAND) tanpa argumen dan salin rumus ke bawah 10 sel. Fungsi ini akan menghasilkan satu set 10 angka pecahan acak dari 0 hingga 1:

Angka acak tanpa pengulangan

Di kolom berikutnya kami memperkenalkan fungsinya RANKuntuk menentukan posisi dalam peringkat untuk setiap nomor acak yang diterima:

Angka acak tanpa pengulangan

Kami mendapatkan apa yang kami inginkan di kolom B – jumlah bilangan bulat acak yang tidak berulang yang diinginkan dari 1 hingga 10.

Murni secara teoritis, situasi mungkin muncul ketika SLCHIS akan memberi kita dua angka acak yang identik di kolom A, peringkatnya akan cocok dan kita akan mendapatkan pengulangan di kolom B. Namun, kemungkinan skenario seperti itu sangat kecil, mengingat fakta bahwa akurasinya adalah 15 tempat desimal.

Metode 2. Rumit

Metode ini sedikit lebih rumit, tetapi hanya menggunakan satu rumus array. Katakanlah kita perlu membuat daftar 9 bilangan bulat acak yang tidak berulang dalam kisaran dari 1 hingga 50 pada selembar kertas.

Masukkan rumus berikut di sel A2, klik di akhir Ctrl + Shift + Enter (untuk memasukkannya sebagai rumus array!) dan salin rumus ke jumlah sel yang diinginkan:

Angka acak tanpa pengulangan

Metode 3. Makro

Dan, tentu saja, Anda dapat menyelesaikan masalah tersebut dengan menggunakan pemrograman di Visual Basic. Dalam salah satu artikel lama tentang pengambilan sampel acak, saya telah mengutip fungsi makro array Lotto, yang menghasilkan jumlah angka acak yang tidak berulang yang diperlukan dari interval tertentu.

  • Cara menghitung jumlah nilai unik dalam rentang
  • Pilihan acak elemen dari daftar

Tinggalkan Balasan