# 北軟103 problemD 條件機率和貝氏定理於二元通訊系統之應用 ###### tags: `北軟103` ## 題目 ![](https://i.imgur.com/HaJx3NJ.png) ![](https://i.imgur.com/iQO0R97.png) ![](https://i.imgur.com/ZDwkldo.png) ![](https://i.imgur.com/b6BfTRP.png) ![](https://i.imgur.com/1aLr2gz.png) ![](https://i.imgur.com/C6mhB0b.png) ## 想法 這題看起來很複雜,但我們可以從題目敘述推敲出一些東西 假設有四個機率 1. 輸入0的機率 w 2. 輸入1的機率 x 3. 輸入0但接收錯誤的機率 y 4. 輸入1但接收錯誤的機率 z 那我們考慮輸出1的可能的話,有以下幾種可能 輸入1,接收1,完全正確 輸入0,接收錯誤。 所以我們可以列出式子 $Ans = x-(x \times z)+(w \times y)$ 那假設我們知道輸出是1,考慮輸入為1的機率,那就只剩下以下一種情況 輸入1,接收1,完全正確 所以我們可以根據貝式定理,列出式子 $Ans = \dfrac{x-(x \times z)}{(x-(x \times z)+(w \times y))}$ 另外,這題有在工科賽103出現過,而且題目幾乎完全相同。 ## 程式碼(C#) ```csharp= using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace problemD { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Button1_Click(object sender, EventArgs e) { double w = Convert.ToDouble(textBox1.Text); double x = Convert.ToDouble(textBox2.Text); double y = Convert.ToDouble(textBox3.Text); double z = Convert.ToDouble(textBox4.Text); textBox5.Text = "通道輸出為1的機率為:" + (x+w*y-x*z); } private void Button2_Click(object sender, EventArgs e) { double w = Convert.ToDouble(textBox1.Text); double x = Convert.ToDouble(textBox2.Text); double y = Convert.ToDouble(textBox3.Text); double z = Convert.ToDouble(textBox4.Text); textBox5.Text = "假設我們已經觀察到通道輸出為1,這時候通道輸入為1的機率為:" + ((x - x * z) / (x + w * y - x * z)); } private void Button3_Click(object sender, EventArgs e) { Environment.Exit(0); } } } ```