跳轉到內容

ROOT/練習

來自華夏公益教科書,開放的世界,開放的書籍

此頁面列出了本書所有練習。完成所有練習是掌握本書精髓的重要部分。

練習:嘗試互動式 ROOT
在互動式 ROOT 會話中:用隨機數填充一個包含 100,000,000 個 64 位浮點數的陣列,該陣列的型別為 機器無關的 ROOT 型別 Double_t。計算陣列的平均值並將其列印到控制檯。注意計算時間。

提示:您可以透過建立一個指向 TRandom 類例項的指標來獲得隨機實數。(建構函式需要一個任意整數作為初始化。)然後,您可以呼叫 TRandom::Rndm() 方法獲取一個簡單的偽隨機數,該隨機數均勻分佈在 0 到 1 之間。例如

TRandom *R = new TRandom(time(0));  // create a pointer to a new instance of TRandom in the heap
cout << R->Rndm() << endl;
[解決方案]
練習:解釋型 ROOT 宏
  1. 考慮在 上一練習 中解決的問題。現在編寫一個指令碼,執行與之前相同的事情,並將該指令碼作為解釋型宏執行。它的執行速度更快嗎?
  2. 以一種方式修改指令碼,使使用者可以將要建立的隨機數的數量作為引數傳遞。
  3. 過載宏,使仍然可以傳遞數字的數量,但如果沒有給出引數,則將生成 100,000,000 個數字。
[解決方案]
練習:編譯型 ROOT 宏
使用 您之前編寫的指令碼 並對其進行修改,使其可以透過 ACLiC 作為編譯型宏執行。
  • 確保帶引數和不帶引數的呼叫都能正常工作。
  • 在您更改指令碼後,您的指令碼仍然可以被 CINT 解釋嗎?
  • 編譯型宏針對 100,000,000 個數字的效能如何?對於 5 個數字來說,哪種更快?
[解決方案]
練習:一個簡單的獨立應用程式
再次考慮 您之前應該編寫的程式碼,該程式碼用於計算一個隨機數陣列的平均值。現在,最後但並非最不重要的是,將其製作成一個獨立的應用程式,並在不依賴任何 ROOT 會話的情況下執行它。確保仍然可以傳遞引數。檢查應用程式的效能。還要注意,您的修改不要干擾 CINT 或 ACLiC 對指令碼的解釋或即時編譯。
[解決方案]
華夏公益教科書