Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menjana Sisihan Normal Rawak dalam C/C Menggunakan Transformasi Box-Muller?

Bagaimanakah Saya Boleh Menjana Sisihan Normal Rawak dalam C/C Menggunakan Transformasi Box-Muller?

Patricia Arquette
Lepaskan: 2024-11-27 18:48:15
asal
771 orang telah melayarinya

How Can I Generate Random Normal Deviates in C/C   Using the Box-Muller Transform?

Menjana Simpang Normal Rawak dalam C/C

Menjana nombor rawak yang mengikut taburan normal ialah tugas biasa dalam pelbagai aplikasi. Dalam C/C , terdapat beberapa pendekatan untuk mencapai matlamat ini tanpa bergantung pada perpustakaan luaran seperti Boost.

Satu kaedah yang digunakan secara meluas ialah transformasi Box-Muller, yang mengubah dua nombor rawak teragih seragam kepada sepasang taburan normal nombor rawak. Formula matematik adalah seperti berikut:

x = sqrt(-2 * ln(u1)) * cos(2 * M_PI * u2)
y = sqrt(-2 * ln(u1)) * sin(2 * M_PI * u2)
Salin selepas log masuk

di mana u1 dan u2 diedarkan secara seragam nombor rawak dalam julat [0, 1]. Untuk menjana satu sisihan biasa rawak, jana pasangan menggunakan penjelmaan Box-Muller dan kembalikan salah satu daripadanya, simpan yang lain untuk kegunaan seterusnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Sisihan Normal Rawak dalam C/C Menggunakan Transformasi Box-Muller?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan