2016-05-31 90 views
0

我將如何縮放隨機數字以說明1-10 而不失去隨機性?如何將僞隨機數縮放到特定範圍?

我知道,只是使用%10不是一個好主意。

,此外,我需要一個種子值,這樣我就可以 determinsitic號碼,

測試,但我不明白什麼價值這個種子應該有 ,我又把它如何影響序列。

如果是高還是低,是否有區別?

在此先感謝。

+0

PRNGs產生一個非常長的序列,一遍又一遍地重複。種子以該順序決定你的起始位置。序列很長,不知道種子=不知道接下來會發生什麼。 – zapl

+0

@zapl所以如果序列很長,我知道它何時會重複? – jam

+0

經過了一段時間:http://stackoverflow.com/a/10217354/995891 - 由於序列的開頭看起來與一些隨機的相似序列沒有什麼不同,所以你甚至不會輕易地告訴你從一開始就看到同樣的事情,除非你跟蹤生成的每一個數字。 – zapl

回答

3
import java.util.Random; 

Random random = new Random(yourSeed); 
int randomInt = random.nextInt(10) + 1 ; 

seed沒有其他目的,只能給PRNG一個起點。它純粹是任意的,不會影響隨機數的分佈。

nextGaussian()不同之處在於它返回分佈在鐘形曲線周圍的浮點數。

+0

並且random.nextInt(10)+ 1提供均勻分佈嗎? – jam

+0

這就是它在盒子邊上所說的;-) – Stavr00

+0

對不起,堆棧溢出讓我懶惰,擡頭看 java doc – jam

0

通常試圖獲得一個隨機值時,你會使用這樣的:

public int getRandom(int min, int max) 
{ 
    return (int) Math.round(Math.random() % (max - min) + min); 
} 

或者,就像我剛剛從Stavr00的答案記住,使用內置的功能之一,從java.util.Random

+0

不能這樣工作。 'Math.random()'只產生0..1的值,你必須乘以http://stackoverflow.com/a/363732/995891 – zapl

+0

@zapl .....我想我應該得到一些睡 – Gelunox