【发布时间】:2013-03-07 16:45:46
【问题描述】:
设置如下:
对于我的学士论文,我想测试 LHC 使用的喷射算法。基本上第一步是以下:给定一些 4 动量
p[0] = nullvector(45.0000000000106,33.03951484238976,14.97124733712793,26.6317895033428)
我想通过以 10^(-12) 的顺序将一些(例如 50 个)随机生成的 4 向量添加到最后三个分量来模拟实验数据,这样它们就很小(这就是有趣的物理学发生的地方),但明显高于 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 位小数。
现在重点:我可以在不超过双浮点精度的情况下按小数点后三位以上的顺序存储数字吗?
PS:有没有更好的方法来生成小的随机数? (这听起来像是另一个话题;))
【问题讨论】:
标签: c double scientific-notation