下面是设置:
在我的学士论文中,我想测试LHC使用的喷射机算法。基本上,第一步是折叠式:给定一些4-动量。
p[0] = nullvector(45.0000000000106,33.03951484238976,14.97124733712793,26.6317895033428)我想模拟实验数据,把一些随机产生的4个矢量按10^(-12)的顺序添加到最后三个分量中,这样它们就很小(这就是有趣的物理现象发生的地方),但明显高于15个小数的双浮点精度。因此,快速和肮脏的解决方案如下:
seed=time(NULL);
srand(seed);
random=(rand()%9001)*1.0E-15;
random=random+1E-12;
printf("%.15E\n",random);这给了我1E-12和10E-12之间的随机数(=1E-11),有三个小数点,所以在“实”双数中,我得到了15个小数。
现在要说的是:,我可以用超过三个小数的顺序存储数字,而不超过双浮点数的精度?
有没有更好的方法来产生小的随机数?(这听起来像是另一个话题)
发布于 2013-03-07 16:49:45
创建浮点随机数的传统方法是通过取double x = (double)rand()/RAND_MAX;使其成为一个范围[0-1],然后乘以9001E-1,将您的范围缩放到1E-12到1E-15值为零。
https://stackoverflow.com/questions/15276875
复制相似问题