Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menjana Nombor Rawak Benar Seragam dalam C?
Anda berusaha untuk menjana nombor rawak yang diedarkan secara seragam dalam selang waktu tertentu, [min, maks]. Walau bagaimanapun, kaedah semasa anda menghasilkan nombor berkelompok di sekitar satu titik.
Fungsi rand() selalunya tidak boleh dipercayai untuk menjana pengagihan seragam. Ia bergantung pada pengendali modulus yang boleh memperkenalkan bias.
Dalam C 11, pertimbangkan untuk menggunakan std::uniform_int_distribution untuk penyelesaian yang lebih dipercayai:
#include <iostream> #include <random> int main() { const int range_from = min; const int range_to = max; std::random_device rand_dev; std::mt19937 generator(rand_dev()); std::uniform_int_distribution<int> distr(range_from, range_to); std::cout << distr(generator) << '\n'; }
Perpustakaan C 11 menawarkan pelbagai penjana rawak lain dengan pengagihan yang berbeza. Contohnya, std::shuffle boleh menyusun semula elemen bekas secara rawak.
Jika C 11 tidak tersedia, pertimbangkan untuk menggunakan Boost.Random, yang menyediakan kefungsian yang serupa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Nombor Rawak Benar Seragam dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!