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
Patricia Arquetteasal
2024-11-27 18:48:15821semak imbas

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)

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!

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