Bagaimana cara memilih item acak dalam daftar yang tidak ditandai pada kolom kedua?

0

Jadi, saya menonton film, dan saya memiliki 177 di antaranya, saya memasukkan semua judul ke kolom A, dan mencari tahu bagaimana melakukan Pengacakan untuk membuka judul, tetapi saya ingin memiliki kolom, juga untuk itu ditonton , dan jika telah ditonton, untuk melewati film yang ditonton, sampai semua film telah ditonton. Kode saya sejauh ini adalah ini:

=INDIRECT("B"&RANDBETWEEN(1;COUNTA(B21:B178)))
Josh Staats
sumber
Apa pertanyaannya?
a CVn
Jadi saya memiliki daftar film, dan setiap kali saya menontonnya, saya memiliki kolom lain untuk saya tandai apakah saya menontonnya atau tidak, ditandai dengan ya, jika tidak dikosongkan, dan dengan kode saya, secara acak memilih film, tetapi saya perlu untuk secara acak memilih film yang belum saya tonton.
Josh Staats

Jawaban:

0

Saran saya adalah menambahkan kolom dengan nomor acak. Kemudian urutkan semuanya pada nomor acak. Tonton film sesuai urutan yang diberikan. Setelah Anda menyaksikan semuanya, buat ulang dan susun ulang daftar.

    239 Movie A
    475 Movie B
    683 Movie C
    241 Movie D
    748 Movie E

Setelah mengurutkan, (dalam Excel - saya berasumsi OOCalc akan melakukan hal yang sama) nomor acak akan dibuat ulang:

    145 Movie A
    978 Movie D
    783 Movie B
    322 Movie C
    773 Movie E

Angka acak juga dibuat ulang ketika Anda menutup dan membuka kembali file (sekali lagi, setidaknya di Excel), jadi jangan mengurutkan lagi sampai Anda sudah benar-benar turun daftar.

Jika Anda benar-benar ingin menguraikan, misalnya, jika Anda juga ingin memastikan Anda tidak menonton film yang sama dua kali dalam periode 30 hari (yaitu, hindari kemungkinan acak bahwa film terakhir dari satu jenis menjadi film pertama dari jenis berikutnya), Anda dapat menggunakan kolom sebagai cap waktu ketika Anda terakhir melihatnya, lalu tambahkan 30 ditambah beberapa nomor acak, dan kemudian urutkan. Anda bahkan dapat menambahkan kolom nomor acak kedua untuk memastikan lebih banyak keacakan dalam waktu sesekali nomor acak yang sama dihasilkan untuk lebih dari satu film.

Variasi dan kemungkinannya hampir tidak terbatas.

C. M.
sumber
Sementara, saya memang suka ini, tetapi saya sedang memikirkan pernyataan If bisa bekerja di mana saya menggunakan kode saya, kemudian gunakan If It True Saya belum menonton film, lalu, tetap, jika tidak mencoba lagi.
Josh Staats
Pada dasarnya saya bertanya-tanya bagaimana membuat ini berfungsi dengan benar. =INDIRECT("B"&RANDBETWEEN(1;COUNTA(B2:B178)))IF(C2:C178; ;=INDIRECT("B"&RANDBETWEEN(1;COUNTA(B2:B159))))
Josh Staats
Ada masalah dengan pendekatan itu adalah Anda tidak ingin menonton film yang sama dua kali. Berikut ini contoh situasi - misalkan Anda punya 5.000 judul film. Menggunakan fungsi Anda, Anda telah menonton setengah. Sekarang, setiap kali Anda ingin menonton yang baru, fungsi Anda akan mengembalikan film yang sudah Anda tonton setengah kali, jadi perlu memilih lagi. Setelah Anda menonton 3/4, itu akan mengembalikan yang sudah Anda tonton 3/4. Pada saat Anda menonton 4999 .. fungsi Anda harus berputar, aktif statistik rata-rata, 4999 kali untuk menemukan itu satu film yang belum Anda tonton!
C. M.
Jadi, apa yang sebenarnya ingin Anda lakukan bukanlah memilih film secara acak - Anda ingin mengacak daftar film yang akan ditonton. Ini seperti mengocok meja kartu dengan mengeluarkan kartu secara acak - Untuk memastikan Anda tidak memilih kartu yang sama lagi, Anda mengeluarkannya dari geladak dan menyimpannya, yang membuat tumpukan kartu yang tersisa lebih kecil, sampai hilang . Ketika hilang, tumpukan kartu yang Anda tarik berada dalam urutan acak. Tetapi jika Anda memasukkan kartu kembali ke tumpukan kartu, Anda berisiko kemungkinan Anda akan terus menarik kartu yang sama secara acak, berulang kali.
C. M.
Meskipun Anda dapat menggunakan ide .. "Pilih film secara acak, jika sudah ditonton, turunkan daftar dari titik itu sampai Anda menemukan film yang belum ditonton", Anda juga harus memberi kode cara memeriksa apakah film tersebut telah ditonton, dan cara menanganinya jika Anda mencapai akhir daftar tanpa menemukan film. Ini adalah hal-hal yang harus Anda tuliskan kode VBA lengkap, tidak menggunakan fungsi lembar kerja Excel yang sederhana, karena Anda perlu mempertahankan "informasi negara" saat sedang berjalan untuk menemukan kandidat yang cocok untuk ditonton.
C. M.