c 模擬bayes方法

2022-08-04 11:12:14 字數 3369 閱讀 5639

設計思路:

首先,建立乙個類庫,生成動態鏈結庫檔案(.dll檔案);

然後,再建立乙個應用程式,設計乙個介面,通過圖形介面輸入起始變數;

最後,在「開始」按鈕點選方法下,實現從既定的文字檔案(.txt檔案)讀取要模擬的一系列資料,然後通過按鈕方法動態呼叫封裝好的dll檔案來計算出結果,最後把結果返回到圖形介面的textbox中;

實現過程:

一,建立動態鏈結庫

1 新建》工程》 類庫,給要建立的類庫改名為:cp( 即 computing process);

2  為了便於以後的計算,在自動生成的class1類中定義一下方法:

public double factorial(int i) 實現階乘;

public double combination(int m, int n) 組合數計算方法;

public double compute(double dept1, int m, int n)  計算條件概率;

public double quangai(double xa, double xb, double dept1, double dept2, int m, int n)  用全概公式計算方法;

public double houyan_a(double xa, double xb, double dept1, double dept2, int m, int n)  後驗概率方法一;

public double houyan_b(double xa, double xb, double dept1, double dept2, int m, int n) 後驗概率方法二;

using system;

using system.collections.generic;

using system.text;

namespace cp

public

double combination(int m, int n)

public

double compute(double dept1, int m, int n)

public

double quangai(double xa, double xb, double dept1, double dept2, int m, int n)

public

double houyan_a(double xa, double xb, double dept1, double dept2, int m, int n)

public

double houyan_b(double xa, double xb, double dept1, double dept2, int m, int n)

}}

3   配置輸出,在解決方案上右擊——屬性,在應用程式選卡中需要注意一下三個內容:1.程式集名稱2.預設命名空間3.輸出型別

1.cp       2.cp         3.類庫

ps:這些對我呼叫來說很有用!

4 寫完以上方法後點選「生成」>"生成cp";如果以上都沒有錯誤,就可以在該工程所在

資料夾中找到"cp.dll"

即,剛生成的動態鏈結庫,以備後面的計算所呼叫,就這樣幾步已經把最核心的計算過程全部封裝到了cp.dll中。

二  設計輸入介面實現動態呼叫

1 新建》專案》windows應用程式,點選,修改專案名稱為「bayes_test」,確定;

2 在彈出的主介面上,設計自己的輸入介面,我的介面如下:

3 介面設計說明:

變數xa為 最初迭代前a的可信度值;變數x為 最初迭代前b的可信度值;

變數xa為 最初迭代後a的可信度值;變數xa為 最初迭代後a的可信度值;

最後需要通過點選「開始」按鈕實現檔案讀取和計算過程以及結果返回的功能。

4  單擊左邊的「應用」 >"新增引用">"l瀏覽",在cp專案工程中找到cp.dll檔案,點選確認,然後就可以在應用中看到多了乙個名叫cp的引用。然後在名字空間中新增「using  cp 」和「using  system.runtime.interopservices」;

5  雙擊「開始」按鈕進入開始按鈕的點選方法中,在開始按鈕的方法中實現讀取檔案和計算,以及結果返回的過程,**如下:

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.text;

using system.runtime.interopservices;

using system.windows.forms;

using system.io;

using cp;

namespace bayes_test

private

void button1_click(object sender, eventargs e)

);int l = abc.length;

int guance = new

int[l];

for (int i = 0; i < guance.length; i++)

console.write("

檔案中的資料是:

");for (int i = 0; i < guance.length; i++)

cp.class1 k = new class1();

for (int i = 0; i < guance.length; i += 2)

textbox3.text = xa.tostring();

textbox4.text = xb.tostring();

filestream.close();

}private

void button2_click(object sender, eventargs e)

}}

三 執行結果演示

讀取的檔案中資料是"5 5 10 9"

迭代兩次後結果和例題相符,說明過程正確。

C 人工模擬棧實現方法

在c 中,棧作為一種無可替代的重要資料結構,對於程式設計師來說異常重要。那麼,我們該如何用 人工模擬棧呢?首先,設定棧的www.cppcns.com最大深度 因為這裡的棧是由陣列實現的,在函式引用傳遞的過程中必須設定大wzrtmsx小 第二步,初始化棧,就是只要把棧頂指標設定為 1 為什麼設定為 1...

用巨集模擬C 模板的方法1

file classroomexamples.c brief 用巨集模擬c 模板的方法1 用巨集模擬c 模板 c語言中,合法函式名或變數名不能帶 如果巨集的入參用 連線到函式名或變數名上,會報錯的,不支援入參為datatype 的用法.模板是c 的特性,用巨集模擬模板是比較恰當的.因為如果是在c 中...

C51 GPIO口模擬串列埠方法

隨著微控制器的使用日益頻繁,用其作前置機進行採集和通訊也常見於各種應用,一般是利用前置機採集各種終端資料後進行處理 儲存,再主動或被動上報給管理站。這種情況下下,採集會需要乙個串列埠,上報又需要另乙個串列埠,這就要求微控制器具有雙串列埠的功能,但我們知道一般的51系列只提供乙個串列埠,那麼另乙個串列...