Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C Boleh Menjana Nombor Benar-Benar Rawak?

Bagaimanakah C Boleh Menjana Nombor Benar-Benar Rawak?

Linda Hamilton
Linda Hamiltonasal
2024-12-23 15:58:09491semak imbas

How Can C   Generate Truly Random Numbers?

Menjana Nombor Rawak dalam C

Dalam bidang pengaturcaraan, menjana nombor rawak berfungsi sebagai asas untuk memperkenalkan spontan ke dalam simulasi, seperti, dan aplikasi lain. C , bahasa yang serba boleh dan digunakan secara meluas, menawarkan beberapa pendekatan untuk tugas ini.

Satu kaedah yang biasa digunakan menggunakan fungsi perpustakaan standard srand dan rand daripada pengepala. Walaupun mampu menghasilkan nombor yang kelihatan rawak, teknik ini kadangkala menghasilkan keputusan yang tidak diingini, seperti yang dibuktikan oleh pengulangan nombor yang sama berturut-turut. Untuk menangani kelemahan ini, C 11 memperkenalkan pendekatan yang lebih halus.

C 11 dan Penjana Nombor Rawak

C 11 menampilkan beberapa ciri yang disesuaikan khusus untuk menjana nombor rawak. Antaranya, header menonjol dengan pelaksanaan mantap Mersenne Twister, penjana nombor pseudorandom yang terkenal dengan kualiti yang tinggi. Penggunaannya ditunjukkan di bawah:

#include <random>
#include <iostream>

int main()
{
    std::random_device dev; // Seed generator
    std::mt19937 rng(dev()); // Initialize Mersenne Twister engine
    std::uniform_int_distribution<std::mt19937::result_type> dist6(1, 6); // Distribution for numbers between 1 and 6

    std::cout << dist6(rng) << std::endl; // Generate a random integer between 1 and 6
}

Kod ini memanfaatkan kuasa Mersenne Twister dan uniform_int_distribution untuk menghasilkan nombor yang benar-benar rawak dalam julat yang ditentukan. Dengan memanfaatkan penjana nombor rawak C 11, pengaturcara boleh meningkatkan kebolehpercayaan dan kepelbagaian aplikasi mereka yang memerlukan input rawak.

Atas ialah kandungan terperinci Bagaimanakah C Boleh Menjana Nombor Benar-Benar Rawak?. 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