在我的问题中,我要创建一个基类来表示一个四向量(物理学中一个涉及四维向量的概念),然后创建一个派生类来专门表示从基类继承的粒子的四个动量。我得到了一小段代码,用于生成动量大小的“随机”xy 和 z 分量。代码如下
#include <cstdlib>
double triangular(double momentum){
double x, y;
do{
x = momentum*rand()/RAND_MAX;
y = x/momentum;
} while (1.0*rand()/RAND_MAX > y);
return x;
}
在我的问题中说,这段代码应该是生成幅度,然后随机分成 x、y 和 z 分量。这段代码返回一个值,所以我看不到它是如何做问题中所说的。有人可以帮我理解这段代码在做什么,以及如何使用它来创建动量大小的三个分量。非常感谢你。