C 11 memperkenalkan ciri baharu untuk menjana nombor rawak, bertujuan untuk meningkatkan fleksibiliti, prestasi, dan konsistensi. Ciri ini termasuk enjin dan pengedaran nombor rawak, yang menangani had penjana nombor rawak tradisional seperti rand().
Enjin ialah teras penjanaan nombor rawak. Mereka menjana urutan nombor pseudorandom dan memastikan keseragaman pengedaran. C 11 menyediakan beberapa pilihan enjin, termasuk:
Taburan menerangkan taburan nombor rawak yang dikehendaki. C 11 termasuk taburan untuk menjana:
Untuk menjana nombor rawak dalam C 11, ikuti langkah berikut:
#include <random> // Engine std::mt19937 rng(std::random_device()()); // Distributions std::uniform_int_distribution<uint32_t> uint_dist; std::normal_distribution<double> normal_dist(0.5, 0.2); // Generate random numbers while (true) { std::cout << uint_dist(rng) << " " << normal_dist(rng) << std::endl; }
Sama-sama kemungkinan hasil memastikan bahawa setiap nombor dalam julat yang ditentukan mempunyai peluang yang sama untuk dijana, bias evitando dalam penjanaan nombor rawak. Pengagihan yang betul, seperti yang disediakan dalam Penjanaan nombor rawak dalam C 11 menyokong konkurensi. Untuk memastikan keselamatan benang, tetapkan setiap benang enjinnya sendiri dengan benih unik atau segerakkan akses kepada objek enjin. Atas ialah kandungan terperinci Bagaimanakah C 11 Meningkatkan Penjanaan Nombor Rawak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!Pertimbangan Konkurensi