Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Penambahbaikan C 11 Boleh Meningkatkan Simulasi Dadu Tidak Pisahkan Menggunakan Penjanaan Nombor Rawak?

Bagaimanakah Penambahbaikan C 11 Boleh Meningkatkan Simulasi Dadu Tidak Pisahkan Menggunakan Penjanaan Nombor Rawak?

Susan Sarandon
Lepaskan: 2024-12-22 08:33:10
asal
204 orang telah melayarinya

How Can C  11 Enhancements Improve Unbiased Dice Simulations Using Random Number Generation?

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;
}
Salin selepas log masuk

Penjelasan Kod

  • std::random_device memulakan penjana nombor rawak.
  • std::mt19937 ialah nombor pseudorandom Mersenne Twister penjana.
  • std::uniform_int_distribution digunakan untuk menjana integer rawak dalam julat yang ditentukan.
  • Objek dist6 dimulakan dengan julat [1, 6].

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan