Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menjana Nombor Rawak Teragih Seragam Dalam Julat Tertentu dalam C ?
Anda mencari kaedah untuk menjana nombor rawak secara seragam dalam julat [min, maks].
Kecacatan dengan rand
Pelaksanaan semasa anda menggunakan rand() dan modulus pengendali mungkin tidak memastikan pengedaran seragam, kerana kelakuannya bergantung pada RAND_MAX dan julat itu sendiri.
C 11 dan Penjanaan Julat Seragam
Dalam C 11, std::uniform_int_distribution menawarkan penyelesaian yang disesuaikan dengan keperluan ini:
#include <random> std::uniform_int_distribution<int> distr(min, max); std::random_device rand_dev; std::mt19937 generator(rand_dev()); int random_number = distr(generator);
Tambahan Ciri-ciri
Yang
Pengocokan Bekas
Untuk mengocok bekas, gunakan std::shuffle:
#include <random> #include <vector> std::vector<int> vec = {4, 8, 15, 16, 23, 42}; std::random_device random_dev; std::mt19937 generator(random_dev()); std::shuffle(vec.begin(), vec.end(), generator);
Boost.Random
Jika menggunakan pengkompil C 11 tidak boleh dilaksanakan, pertimbangkan Boost.Random, yang menampilkan antara muka yang serupa dengan rakan sejawat C 11.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Nombor Rawak Teragih Seragam Dalam Julat Tertentu dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!