Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C Boleh Menjana Integer Rawak Teragih Seragam dengan Cekap?

Bagaimanakah C Boleh Menjana Integer Rawak Teragih Seragam dengan Cekap?

DDD
DDDasal
2024-12-24 05:59:13187semak imbas

How Can C   Efficiently Generate Uniformly Distributed Random Integers?

Menghasilkan Integer Rawak Teragih Seragam Dengan Cekap

Menjana integer rawak teragih seragam dalam julat tertentu merupakan tugas asas dalam banyak aplikasi pengaturcaraan. Walaupun kelihatan remeh, mencapai kelajuan optimum, keseragaman, fleksibiliti dan keperluan pembenihan boleh menjadi mencabar.

Untuk menangani kebimbangan ini, piawaian C 2011 memperkenalkan perpustakaan nombor rawak yang teguh. Coretan kod di bawah memanfaatkan keupayaan perpustakaan ini untuk menjana integer rawak teragih seragam dengan cekap:

#include <random>

std::random_device rd;     // Only used once to initialise (seed) engine
std::mt19937 rng(rd());    // Random-number engine used (Mersenne-Twister in this case)
std::uniform_int_distribution<int> uni(min,max); // Guaranteed unbiased

auto random_integer = uni(rng);

Pendekatan ini menawarkan beberapa kelebihan:

  • Cekap: The Mersenne -Enjin Twister yang digunakan dalam rng terkenal dengan kelajuan dan kecekapannya, menjadikannya sesuai untuk menjana besar nombor nombor rawak.
  • Seragam: Kelas uniform_int_distribution memastikan integer rawak dijana secara seragam dalam julat yang ditentukan.
  • Fleksibel: Minimum dan nilai maksimum boleh dilaraskan mengikut keperluan, membolehkan julat yang luas aplikasi.
  • Boleh Dibenih: rand_device menyediakan benih untuk penjana rawak, membolehkan hasil yang boleh dihasilkan semula apabila dikehendaki.

Dengan menggunakan pendekatan piawai ini, pengaturcara boleh cekap jana integer rawak teragih seragam tanpa memerlukan formula kompleks atau pelaksanaan tersuai.

Atas ialah kandungan terperinci Bagaimanakah C Boleh Menjana Integer Rawak Teragih Seragam dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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