Nombor rawak tanpa ulangan

Perumusan masalah

Mari kita anggap bahawa kita perlu mencipta satu set nombor rawak integer tanpa ulangan dalam julat nilai tertentu. Contoh semasa dalam perjalanan:

  • menjana kod rawak unik untuk produk atau pengguna
  • menugaskan orang kepada tugasan (masing-masing secara rawak daripada senarai)
  • permutasi perkataan dalam pertanyaan carian (hello seo-shnikam)
  • bermain lotto dll.

Kaedah 1. Mudah

Sebagai permulaan, mari kita pertimbangkan pilihan mudah: kita perlu mendapatkan set rawak 10 integer dari 1 hingga 10. Menggunakan fungsi terbina dalam Excel ANTARA KES (TEPI ANTARA) keunikan tidak dijamin. Jika anda memasukkannya dalam sel helaian dan menyalinnya ke bawah 10 sel, maka pengulangan boleh berlaku dengan mudah:

Nombor rawak tanpa ulangan

Oleh itu, kita akan pergi ke arah lain.

Semua versi Excel mempunyai fungsi Rank (RANG), bertujuan untuk pemeringkatan atau, dengan kata lain, menentukan kedudukan teratas nombor dalam set. Nombor terbesar dalam senarai mempunyai pangkat=1, nombor kedua di atas mempunyai pangkat=2, dan seterusnya.

Mari kita masukkan fungsi dalam sel A2 SLCHIS (RAND) tanpa hujah dan salin formula ke bawah 10 sel. Fungsi ini akan menjana kita satu set 10 nombor pecahan rawak dari 0 hingga 1:

Nombor rawak tanpa ulangan

Dalam lajur seterusnya kami memperkenalkan fungsi Rankuntuk menentukan kedudukan dalam ranking bagi setiap nombor rawak yang diterima:

Nombor rawak tanpa ulangan

Kami mendapat dalam lajur B apa yang kami mahu – sebarang bilangan integer rawak tidak berulang yang dikehendaki daripada 1 hingga 10.

Secara teorinya, situasi mungkin timbul apabila SLCHIS akan memberi kita dua nombor rawak yang sama dalam lajur A, kedudukannya akan sepadan dan kita akan mendapat pengulangan dalam lajur B. Walau bagaimanapun, kebarangkalian senario sedemikian adalah sangat kecil, memandangkan fakta bahawa ketepatannya ialah 15 tempat perpuluhan.

Kaedah 2. Rumit

Kaedah ini lebih rumit sedikit, tetapi hanya menggunakan satu formula tatasusunan. Katakan kita perlu membuat senarai 9 integer rawak tidak berulang dalam julat dari 1 hingga 50 pada helaian.

Masukkan formula berikut dalam sel A2, klik pada akhir Ctrl + Shift + Enter (untuk memasukkannya sebagai formula tatasusunan!) dan salin formula ke bilangan sel yang dikehendaki:

Nombor rawak tanpa ulangan

Kaedah 3. Makro

Dan, sudah tentu, anda boleh menyelesaikan masalah menggunakan pengaturcaraan dalam Visual Basic. Dalam salah satu artikel lama tentang pensampelan rawak, saya telah memetik fungsi makro tatasusunan Lotto, yang menghasilkan bilangan nombor rawak tidak berulang yang diperlukan dari selang waktu tertentu.

  • Bagaimana untuk mengira bilangan nilai unik dalam julat
  • Pemilihan unsur secara rawak daripada senarai

Sila tinggalkan balasan anda