跳转到内容

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 对脚本的解释或即时编译。
[解决方案]
华夏公益教科书