求思路及做法 怎样用c++验证圆弦长范围的概率

写程序的时候就要预先假定随机性(均匀分布)是针对哪个量的,所以验证没有意义
■网友
“完全随机”这个说法是不严谨的。如果理解成『圆上两点与圆心连线的夹角满足均匀分布』的话,我想答案是2/3。写程序验证并没有什么卵用,因为到头来你还得证明你的程序是对的,还不如直接算。==========关于“随机”,一般人总是理解成一个均匀分布或者等概率多项分布,比如抛一个硬币等概率得到正反两面这样。事实上,假如有一个奇怪的硬币,得到正面的概率是0.8,那抛这个硬币的结果也能说是“完全随机”的。所以,一旦问题稍微复杂一点,例如本题,随便说“完全随机”就很不负责任:一没确定随机变量,二没说满足什么分布。以上。
■网友
#include \u0026lt;iostream\u0026gt;#include \u0026lt;cmath\u0026gt;#include \u0026lt;random\u0026gt;#include \u0026lt;ctime\u0026gt;using namespace std;//需要C++11const int EXP_COUNT = 1000000; //测试次数int main(){ const double sqrt3 = sqrt(3); uniform_real_distribution\u0026lt;double\u0026gt; degGen(0.0, 2*acos(-1.0)); default_random_engine re; re.seed(clock()); int successfulCnt=0; for (int i=0; i\u0026lt;EXP_COUNT; ++i) { double degree1 = degGen(re), degree2 = degGen(re); if (std::hypot(cos(degree1)-cos(degree2), sin(degree1)-sin(degree2)) \u0026lt; sqrt3) ++successfulCnt; } cout \u0026lt;\u0026lt; static_cast\u0026lt;double\u0026gt;(successfulCnt) / EXP_COUNT \u0026lt;\u0026lt; endl; // example: 0.666645 }


    推荐阅读