这是我的问题:我在一个球形区域(半径为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。
答案 0 :(得分:0)
好的,我终于找到了问题:在生成高斯随机数时,我使用log(u)而不是log(1-u),你可能是0。