Memperbaiki Penjanaan Nombor Rawak dalam C untuk Simulasi Dadu Tanpa Pinggir
Menjana nombor rawak adalah penting dalam pelbagai aplikasi, termasuk pembangunan permainan. Walaupun kod yang disediakan menjana nombor rawak antara 1 dan 6, ia boleh menghasilkan keputusan berat sebelah, seperti yang diperhatikan dalam output.
Bias dalam Penjanaan Nombor Rawak
Isu timbul daripada menggunakan operasi modulo, yang membahagikan keseluruhan julat nilai yang mungkin dengan 6 dan mengembalikan bakinya. Pendekatan ini boleh memperkenalkan berat sebelah, terutamanya jika julatnya kecil.
Penambahan C 11 untuk Nombor Rawak
Untuk menyelesaikan masalah ini, C 11 memperkenalkan ciri baharu yang menyediakan pengedaran yang lebih baik dan tidak berat sebelah dalam penjanaan nombor rawak. Satu pendekatan yang disyorkan ialah menggunakan kod berikut:
#include <random> #include <iostream> int main() { std::random_device dev; std::mt19937 rng(dev()); std::uniform_int_distribution<std::mt19937::result_type> dist6(1, 6); // distribution in range [1, 6] std::cout << dist6(rng) << std::endl; }
Penjelasan Kod
Pendekatan ini memanfaatkan perpustakaan nombor rawak C 11, yang menawarkan penjanaan nombor rawak yang lebih mantap dan tidak berat sebelah. Dengan melaksanakan kod ini, anda boleh memastikan nombor rawak yang adil dan tidak dapat diramalkan, meningkatkan realisme simulasi melempar dadu anda.
Atas ialah kandungan terperinci Bagaimanakah Penambahbaikan C 11 Boleh Meningkatkan Simulasi Dadu Tidak Pisahkan Menggunakan Penjanaan Nombor Rawak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!