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
Lepaskan: 2024-12-24 05:59:13
asal
143 orang telah melayarinya

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan