Penjanaan nombor rawak dalam C++
Penjanaan nombor rawak adalah bahagian penting dalam pengaturcaraan komputer. Dalam pengaturcaraan C++, nombor rawak juga sangat biasa dan boleh digunakan untuk mensimulasikan data, menjana data ujian, pembangunan permainan, dll. Artikel ini akan memperkenalkan beberapa kaedah penjanaan nombor rawak dalam bahasa C++.
Penjanaan nombor pseudo-rawak
Algoritma penjanaan nombor pseudo-rawak ialah kaedah penjanaan nombor rawak yang digunakan dalam kebanyakan atur cara Ia bukan nombor rawak yang benar, tetapi nombor rawak pseudo yang dijana melalui algoritma matematik tertentu. Dalam C++, anda boleh menggunakan fungsi rand untuk menjana nombor pseudo-rawak. Fungsi
rand ditakrifkan dalam fail pengepala stdlib.h. Ia mengembalikan nombor rawak jenis int, antara 0 hingga RAND_MAX RAND_MAX ditakrifkan dalam fail pengepala stdlib.h, dan nilainya biasanya 32767.
Kod sampel:
#include <iostream> #include <ctime> #include <cstdlib> using namespace std; int main() { // 设置随机数种子 srand(time(0)); // 生成10个随机数 for(int i = 0; i < 10; i++) { cout << rand() << endl; } return 0; }
Dalam kod di atas, fungsi srand digunakan untuk menetapkan benih nombor rawak, dan masa(0) boleh mendapatkan bilangan saat masa semasa, supaya keputusan menjalankan program adalah berbeza setiap kali. Kemudian gunakan gelung for untuk menjana 10 nombor rawak dan mengeluarkannya ke skrin.
Perlu diingatkan bahawa setiap kali fungsi rand dipanggil, ia akan mengembalikan nombor rawak yang unik, tetapi jika ia dipanggil beberapa kali, akan ada tahap korelasi tertentu antara nombor rawak. Oleh itu, apabila menggunakan fungsi rand untuk menghasilkan sejumlah besar nombor rawak, kaedah lain perlu digunakan untuk mengelirukan.
Penjanaan nombor rawak sebenar
Nombor rawak sebenar merujuk kepada nombor rawak yang dijana melalui fenomena fizikal Contohnya, data gelombang seismik atau ciri fotoelektrik boleh dikumpul melalui peranti perkakasan ini sangat mahal dan tidak sesuai untuk kebanyakan Untuk program, ia adalah memadai untuk menggunakan algoritma penjanaan nombor rawak.
Walau bagaimanapun, terdapat beberapa senario aplikasi yang memerlukan nombor rawak keselamatan tinggi Untuk melindungi keselamatan dan kerahsiaan data, nombor rawak benar perlu digunakan. Dalam kes ini, peranti luaran boleh digunakan untuk memberikan nombor rawak yang benar. Sebagai contoh, nombor rawak benar boleh dijana dengan membaling dadu, melambung syiling, melukis lot, dsb., tetapi kaedah ini bukan sahaja tidak cekap, tetapi juga menjana jenis nombor rawak yang terhad.
Kaedah yang lebih biasa ialah menjana nombor yang benar-benar rawak melalui peranti fizikal yang dipanggil penjana nombor rawak (RNG). Ia menjana nombor rawak dengan mengumpul proses fizikal atau prosedur matematik yang tidak dapat diramalkan, di samping menyediakan beberapa ciri keselamatan tambahan. Walau bagaimanapun, kos menggunakan penjana nombor rawak sebenar adalah jauh lebih tinggi daripada menggunakan algoritma penjanaan nombor rawak pseudo.
Penjanaan nombor rawak dalam C++ 11
C++ 11 menyediakan perpustakaan nombor rawak baharu, termasuk dua bahagian: Pertama, penjana nombor pseudo-rawak, termasuk berbilang algoritma yang boleh memenuhi keperluan pelbagai senario aplikasi dengan lebih baik, Kedua ialah penjana nombor rawak benar, yang boleh mengakses kemudahan perkakasan yang dijana khas sistem dan mengembalikan nombor rawak benar.
Pustaka penjanaan nombor rawak dalam C++ 11 termasuk:
- minstd_rand0: Penjana Kongruen Linear
- minstd_rand: Penjana Kongruen Linear yang Diperbaiki
- mt19937 yang lebih baik dengan prestasi jangka panjang Mersenne T9937 dan masa yang lebih baik
- mt19937_64: penjana Mersenne Twister 19937, mengembalikan integer 64-bit
- ranlux24_base: penjana LUX (level, uniform, eXcellent), berjalan pantas dan berkualiti tinggi
- ranlux48_base: LUX (level, uniform, eXcellent) penjana penjana, mengembalikan integer 48-bit, berjalan pantas dan mempunyai tinggi kualiti
- knuth_b: penjana Knuth-B (T, P), menjana urutan rawak yang berbeza daripada standard, dengan kualiti yang lebih tinggi
Menggunakan nombor rawak dalam C++ 11 Semasa menjana perpustakaan, anda perlu memasukkan fail pengepala secara rawak, dan anda boleh menggunakan fungsi uniform_int_distribution dan uniform_real_distribution untuk mengawal julat dan jenis nombor rawak.
Kod sampel:
#include <iostream> #include <random> using namespace std; int main() { // 以当前时间作为种子 default_random_engine engine(time(nullptr)); // uniform_int_distribution:以等概率生成min到max范围内的整数 uniform_int_distribution<int> distribution(0, 100); cout << distribution(engine) << endl; // uniform_real_distribution:以等概率生成min到max范围内的浮点数 uniform_real_distribution<double> r_distribution(0, 100); cout << r_distribution(engine) << endl; return 0; }
Dalam kod di atas, default_random_engine digunakan untuk menjana benih nombor rawak, dan julat nombor rawak integer dan titik terapung yang dijana masing-masing dinyatakan dalam uniform_int_distribution dan uniform_real_distribution. Akhirnya, nombor rawak dijana dengan memanggil fungsi enjin.
Kesimpulan
Di atas adalah beberapa kaedah penjanaan nombor rawak biasa dalam C++ Senario aplikasi yang berbeza memerlukan kaedah penjanaan nombor rawak yang berbeza, dan anda perlu memilih kaedah yang sesuai mengikut situasi sebenar. Dalam pengaturcaraan sebenar, anda boleh menggabungkan kelebihan nombor pseudo-rawak dan nombor rawak benar dan menggunakan beberapa kaedah penjanaan nombor rawak lanjutan untuk meningkatkan kecekapan dan keselamatan program.
Atas ialah kandungan terperinci Penjanaan nombor rawak dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam Golang, gunakan fungsi Intn dalam pakej rand untuk menjana integer rawak dalam julat yang ditentukan. Sintaksnya ialah funcIntn(nint)int, dengan n ialah had atas integer rawak eksklusif. Dengan menetapkan benih nombor rawak dan menggunakan Intn(100)+1, anda boleh menjana integer rawak antara 1 dan 100 (termasuk). Walau bagaimanapun, perlu diambil perhatian bahawa integer rawak yang dijana oleh Intn adalah pseudo-rawak dan tidak boleh menjana integer rawak dengan taburan kebarangkalian tertentu.

Bagaimana untuk melaksanakan kawalan robot dan navigasi robot dalam C++? Kawalan dan navigasi robot adalah bahagian yang sangat penting dalam teknologi robotik. Dalam bahasa pengaturcaraan C++, kita boleh menggunakan pelbagai perpustakaan dan rangka kerja untuk melaksanakan kawalan dan navigasi robot. Artikel ini akan memperkenalkan cara menggunakan C++ untuk menulis contoh kod untuk mengawal robot dan melaksanakan fungsi navigasi. 1. Kawalan robot Dalam C++, kita boleh menggunakan komunikasi bersiri atau komunikasi rangkaian untuk merealisasikan kawalan robot. Berikut ialah kod sampel yang menggunakan komunikasi bersiri untuk mengawal pergerakan robot: inclu

Dalam pembangunan C++, pengecualian penuding nol ialah ralat biasa, yang sering berlaku apabila penunjuk tidak dimulakan atau terus digunakan selepas dikeluarkan. Pengecualian penuding nol bukan sahaja menyebabkan ranap program, tetapi juga boleh menyebabkan kelemahan keselamatan, jadi perhatian khusus diperlukan. Artikel ini akan menerangkan cara untuk mengelakkan pengecualian penuding nol dalam kod C++. Memulakan pembolehubah penunjuk Penunjuk dalam C++ mesti dimulakan sebelum digunakan. Jika tidak dimulakan, penunjuk akan menunjuk ke alamat memori rawak, yang mungkin menyebabkan Pengecualian Penunjuk Null. Untuk memulakan penuding, arahkannya ke an

Bagaimana untuk menulis program penyulitan fail mudah dalam C++? Pengenalan: Dengan perkembangan Internet dan populariti peranti pintar, kepentingan melindungi data peribadi dan maklumat sensitif telah menjadi semakin penting. Untuk memastikan keselamatan fail, selalunya perlu untuk menyulitkannya. Artikel ini akan memperkenalkan cara menggunakan C++ untuk menulis program penyulitan fail mudah untuk melindungi fail anda daripada capaian yang tidak dibenarkan. Analisis keperluan: Sebelum mula menulis program penyulitan fail, kita perlu menjelaskan fungsi asas dan keperluan program. Dalam program mudah ini kita akan menggunakan simetri

Bagaimana untuk menulis sistem cadangan muzik mudah dalam C++? Pengenalan: Sistem pengesyoran muzik ialah hotspot penyelidikan dalam teknologi maklumat moden Ia boleh mengesyorkan lagu kepada pengguna berdasarkan pilihan muzik dan tabiat tingkah laku mereka. Artikel ini akan memperkenalkan cara menggunakan C++ untuk menulis sistem cadangan muzik yang ringkas. 1. Kumpul data pengguna Pertama, kita perlu mengumpul data keutamaan muzik pengguna. Keutamaan pengguna untuk pelbagai jenis muzik boleh diperolehi melalui tinjauan dalam talian, soal selidik, dsb. Simpan data dalam fail teks atau pangkalan data

Cara menggunakan algoritma jujukan Fibonacci dalam C++ Jujukan Fibonacci ialah jujukan yang sangat klasik, dan definisinya ialah setiap nombor ialah jumlah dua nombor sebelumnya. Dalam sains komputer, menggunakan bahasa pengaturcaraan C++ untuk melaksanakan algoritma jujukan Fibonacci adalah kemahiran asas dan penting. Artikel ini akan memperkenalkan cara menggunakan C++ untuk menulis algoritma jujukan Fibonacci dan memberikan contoh kod khusus. 1. Kaedah rekursif Rekursi ialah kaedah biasa algoritma jujukan Fibonacci. Dalam C++, algoritma jujukan Fibonacci boleh dilaksanakan secara ringkas menggunakan rekursi. bawah

Menggunakan fungsi RAND MySQL untuk menjana nombor rawak mempunyai pelbagai aplikasi dalam sains komputer Dari pembangunan permainan hingga kriptografi, penjanaan nombor rawak adalah masalah penting dan menarik. Dalam pangkalan data MySQL, anda boleh menggunakan fungsi RAND untuk menjana nombor rawak. Artikel ini akan membincangkan cara menggunakan fungsi RAND MySQL untuk menjana nombor rawak dan menyediakan beberapa contoh kod. Fungsi RAND MySQL ialah fungsi yang menjana nombor rawak Ia boleh menjana nombor titik terapung rawak antara 0 dan 1. Menggunakan fungsi ini, I

Gunakan kemahiran pengaturcaraan C++ dengan cekap untuk membina fungsi sistem terbenam yang mantap Dengan perkembangan teknologi yang berterusan, sistem terbenam memainkan peranan yang semakin penting dalam kehidupan kita. Sebagai bahasa pengaturcaraan peringkat tinggi, C++ adalah fleksibel dan berskala dan digunakan secara meluas dalam pembangunan sistem terbenam. Dalam artikel ini, kami akan memperkenalkan beberapa teknik pengaturcaraan C++ untuk membantu pembangun menggunakan C++ dengan cekap untuk membina fungsi sistem terbenam yang mantap. 1. Gunakan reka bentuk berorientasikan objek Reka bentuk berorientasikan objek ialah salah satu ciri teras bahasa C++. Dalam sistem terbenam
