Jadual Kandungan
Penjanaan nombor pseudo-rawak
Penjanaan nombor rawak sebenar
Penjanaan nombor rawak dalam C++ 11
Kesimpulan
Rumah pembangunan bahagian belakang C++ Penjanaan nombor rawak dalam C++

Penjanaan nombor rawak dalam C++

Aug 22, 2023 pm 12:10 PM
Reka bentuk algoritma Penjanaan nombor rawak pengaturcaraan c++

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menjana integer rawak dalam julat tertentu di Golang? Bagaimana untuk menjana integer rawak dalam julat tertentu di Golang? Jun 04, 2024 am 09:19 AM

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++? Bagaimana untuk melaksanakan kawalan robot dan navigasi robot dalam C++? Aug 25, 2023 pm 09:12 PM

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

Nota Pembangunan C++: Elakkan Pengecualian Penunjuk Null dalam Kod C++ Nota Pembangunan C++: Elakkan Pengecualian Penunjuk Null dalam Kod C++ Nov 22, 2023 pm 02:38 PM

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++? Bagaimana untuk menulis program penyulitan fail mudah dalam C++? Nov 03, 2023 pm 03:40 PM

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++? Bagaimana untuk menulis sistem cadangan muzik mudah dalam C++? Nov 03, 2023 pm 06:45 PM

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++ Cara menggunakan algoritma jujukan Fibonacci dalam C++ Sep 19, 2023 am 10:15 AM

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

Hasilkan nombor rawak menggunakan fungsi RAND MySQL Hasilkan nombor rawak menggunakan fungsi RAND MySQL Jul 25, 2023 pm 04:15 PM

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 berkesan untuk membina fungsi sistem terbenam yang mantap Gunakan kemahiran pengaturcaraan C++ dengan berkesan untuk membina fungsi sistem terbenam yang mantap Aug 27, 2023 am 08:07 AM

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

See all articles