循环被一个值中断

时间:2016-01-10 15:08:06

标签: c

这是我的问题:我在一个球形区域(半径为0.5,外面有反射边界)模拟一个粒子随机行走((我的全码很长)),半径为r = 0.05的吸收边界。它从r = 0.25开始,当它到达吸收边界时,循环将停止。但是,循环始终被值1中断。#QNAN000000000000。例如,我正在写一个文件中与原点的距离:

......(很多数字省略)

0.20613005432153597

0.20623630547871444

0.20638287597603161

0.20639479244526721

0.20632936118972162

0.20624097359751253

0.20634346836172857

0.20662686334789271

0.20662651327072232

0.20661986008216310

0.20662358691463298

0.20661462509258177

0.20649145569824909

0.20651885241720047

0.20652145059961324

0.20651490447436160

0.20646925001041655

0.20645889385120675

0.20629285654651422

0.20633769635178317

0.20635757642249095

0.20645451482187596

0.20654217470043859

1。#QNAN000000000000

这里出现了问题,粒子尚未被吸收,但是1.#QNAN000000000000中断了循环。我隐约知道这可能是由于花车的算术运算中的问题,但我对此非常关注。因此,我想知道我应该做些什么来避免这些事情?非常感谢!

作为调试器,当probolem出现时,我打印出许多变​​量的值。事实证明,所有这些变量都是1.#QNAN000000000000或1.#INF000000000000。

1 个答案:

答案 0 :(得分:0)

好的,我终于找到了问题:在生成高斯随机数时,我使用log(u)而不是log(1-u),你可能是0。