從概念上講,我需要將每個事件的概率相乘。由於可能涉及很多事件,因此我在計算機上添加了對數以避免下溢。 但突然間,我無法說服自己,我應該初始化返回值爲零,然後纔開始添加。我知道零是加法的標識元素,我記得這是我如何做的,但是,看着graph of the logarithm,我可以清楚地看到零的反對數是負無窮。 因此,將返回值初始化爲零應等於將所有概率乘以負無窮,這絕對不正確。我究竟做錯了什麼?
在Java中我有一個隨機生成器,生成從-2^63到2^63的隨機數,這不是java.util.Random。 我需要生成的(0,1)隨機雙,這是我迄今所做的: return (seed/(double)(9223372036854775807L))/2+0.5;//seed is a random long
這是正確的?有沒有數字問題(下溢?)? 可能會更好/更快? 謝謝。