12 poin oleh regentag 2024-10-25 | 8 komentar | Bagikan ke WhatsApp

FreeCell di Windows yang kemungkinan pernah dimainkan banyak orang menyusun kartu secara acak, dan setiap susunan kartu diberi nomor. Jika memilih nomor yang sama, susunan kartunya akan sama.

Sampai sebelum Windows 2000, nomornya tersedia dari 1 hingga 32.000, tetapi sejak XP bertambah menjadi 1.000.000.

Algoritma yang menghasilkan susunan kartu saat nomor dimasukkan telah dipublikasikan, sehingga digunakan juga di program FreeCell lainnya.

Algoritma ini diimplementasikan dalam kode C yang singkat, dan bergantung pada fungsi rand() dan srand() yang diimplementasikan oleh compiler MS.

8 komentar

 
valorqueen 2024-10-25

Tag-hyung, Anda jago sekali.

 
qdr7h 2024-10-25

Algoritme pembangkit bilangan acak pada dasarnya tampak seperti random, tetapi sebenarnya menggunakan relasi rekurens untuk menghasilkan deret bilangan pseudo-random yang tidak benar-benar acak. Setiap implementasi fungsi rand() memiliki cara yang berbeda, tetapi hampir semua algoritme memiliki sifat umum bahwa jika seed pertama sama, maka deret bilangan acak yang mengikuti juga akan sama. Jadi, jika algoritme pengaturan kartu bersifat deterministic, semua susunan kartu pada akhirnya juga ditentukan secara deterministic oleh seed.

Sedikit keluar dari topik, tetapi seberapa "acak" bilangan pseudo-random yang bisa dibuat juga telah lama menjadi salah satu topik penelitian. TAOCP Vol.2 juga membahas hal ini secara singkat.

 
kandk 2024-10-25

Sebenarnya, di komputer tidak ada konsep benar-benar acak.
Karena itu, biasanya perilaku manusia diukur dalam satuan ms dan digunakan sebagai seed acak.

 
dlehals2 2024-10-25

Saya kira bilangan acak menggunakan timestamp waktu saat ini, ternyata saya salah paham hehe. Terima kasih sudah berbagi.

 
regentag 2024-10-25

Saat inisialisasi, banyak yang memang menggunakan waktu sebagai seed. Karena waktu terus berubah.

 
regentag 2024-10-25

Sebagai referensi, di bantuan Windows tertulis, “meskipun belum terbukti, semua game yang dimainkan di sini memiliki solusi”, tetapi menurut upaya banyak orang, nomor 11982 hingga kini dikenal sebagai permainan yang tidak bisa dimenangkan.

Bahkan setelah melewati nomor 32.000, ada juga susunan kartu yang dikenal tidak bisa dimenangkan seperti nomor 146692, 186216, 455889, 495505, 512118, 517776, dan 781948.

 
namojo 2024-10-28

Lho, bagaimana mereka bisa tahu cara menuliskannya tapi tetap tidak bisa memecahkannya? Banyak juga orang-orang yang luar biasa gigih!

 
bakyeono 2024-10-25

Orang-orang yang mengerikan...!