1
我想分配一個系統,我需要使用Random
Java類中的nextGaussian()
。我發現打破獨特種子的數據依賴性的唯一方法是使用多個種子,從而創建多個隨機數。創建新的隨機vs使用相同的隨機
讓我們忘記我的問題的上下文,我只想知道如何使用多個隨機實例進行歸一化,而不是僅使用一個實例。換句話說...... genNew
與genSame
相比有多大的隨機性?
代碼:
public double[] genNew(int lim, long seed)
{
double[] rand = new double[lim];
for(int i = 0; i < lim; i++)
{
//A random for each iteration.
Random r = new Random(i*seed);
rand[i] = r.nextGaussian();
}
return rand;
}
public double[] genSame(int lim, long seed)
{
double[] rand = new double[lim];
//A random for all iterations
Random r = new Random(seed);
for(int i = 0; i < lim; i++)
rand[i] = r.nextGaussian();
return rand;
}
我得到的結果是非常不同的,當我申請兩個數組我的代碼。我無法解釋爲什麼。
編輯:我知道這不會產生相同的陣列,它只是使用的標準化隨機量很大ammount的計算數字時,這兩個數字應該接近(因爲正常化),但他們不是。
不應使用RNG生成一個數字,它們在多次使用時會產生更好的結果。你檢查過'genNew'產生的值嗎? –
是的,價值吸引。這就是爲什麼我想知道我是否做錯了什麼... –
爲什麼值「吸」?你爲什麼認爲他們不是隨機的?只要你使用'genSame()'方法,它們應該是非常隨機的,儘管計算機不可能真的是隨機的,但可以非常接近。 [看看這裏有關隨機數字的更多信息](https://blog.malwarebytes.org/cybercrime/2013/09/in-computers-are-random-numbers-really-random/) – Draken