Rumah >pembangunan bahagian belakang >C++ >Mengapa Pengiraan Kebarangkalian Saya Menghasilkan Keputusan Yang Tidak Dijangka?
Meneroka Ralat Titik Terapung: Contoh Mudah
Perbualan yang mengelilingi pembolehubah titik terapung sering menyebut potensi "ralat." Konsep ini boleh menjadi sangat relevan apabila mempraktikkan penyelesaian masalah, seperti dalam konteks teka-teki yang diberikan.
Pertimbangkan perkara berikut: untuk mencari kebarangkalian untuk memperoleh tepat dua kejayaan dalam sepuluh percubaan bebas, anda menggunakan formula :
p_2x_success = pow(1-p, (double)8) * pow(p, (double)2) * (double)choose(8, 2);
Masalah Ralat Titik Terapung
Dalam keadaan ini, ralat titik terapung menjadi isu yang berpotensi. Pembolehubah titik terapung digunakan untuk mewakili nombor nyata pada komputer, tetapi perwakilannya tidak tepat kerana had dalam ruang storan dan keupayaan pemprosesan. Akibatnya, apabila melakukan operasi titik terapung, ralat boleh terkumpul.
Untuk menggambarkan ini, mari kita bayangkan fungsi f(k) menggunakan graf dalam skala logaritma:
[Imej graf XY dengan X dan Y dalam skala logaritma]
Jika komputer dapat mewakili apungan 32-bit dengan sempurna tanpa ralat pembundaran, keputusan untuk setiap k adalah sifar. Walau bagaimanapun, apabila k meningkat, kami menyaksikan ralat yang semakin meningkat dikaitkan dengan pengumpulan ralat titik terapung.
Replikasi dalam C
Anda boleh meniru tingkah laku ini dalam C dengan melaksanakan perkara berikut kod:
for (int k = 1; k < 1000; k++) { cout << "k = " << k << ", error = " << (pow(1-k, (double)8) * pow(k, (double)2) * (double)choose(8, 2)) << endl; }
Kesimpulan
Contoh mudah ini menunjukkan potensi ralat titik terapung semasa menjalankan operasi titik terapung. Adalah penting untuk mengetahui fenomena ini dan mempertimbangkannya apabila melaksanakan pengiraan berangka.
Atas ialah kandungan terperinci Mengapa Pengiraan Kebarangkalian Saya Menghasilkan Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!