[英]Random Number Generating in Java
我是編程新手,剛剛開始學習數組,並且做得很好,直到我得到一個存儲隨機數的數組。 下面的代碼行是最令我困惑的代碼。
for (int roll = 1; roll <=6000000; roll++)
++frequency[1 + randomNumbers.nextInt(6)];
在此之前,我導入了Random類,並創建了一個名為randomNumbers的新對象,並將變量frequency聲明為具有7個整數的數組。 我正在閱讀的這本書告訴我,上面的這一行擲了600萬次,並使用模具值作為頻率指數。
據我所知,這是在迭代中經歷的600萬次它是否在它每次在身體中所說的,但是我沒有在身體中看到它將任何變量設置為等於隨機數。 我認為我遺漏的最重要的事情是增加頻率[]意味着什么,因為據我所知,在括號內有一個1到6之間的隨機數被加到1.所以600萬次迭代應該按頻率[ 1]通過頻率[7]如果它有可能發生,但即使它通過它我也看不出它是如何設置任何等於那些數組的東西。
有人可以一步一步向我解釋這行代碼barney風格嗎? 我似乎無法繞過它。
這個例程可以分解為這個
for (int roll = 1; roll <=6000000; roll++) {
int the_random_number = 1 + randomNumbers.nextInt(6);
frequency[the_random_number] = frequency[the_random_number] + 1;
}
代碼randomNumbers.nextInt(6)
返回0到5之間的數字。例如,如果它返回3,則添加1以使the_random_number
變為4.之后,將頻率出現4增加1並將其存儲在frequency
數組( frequency[4] = frequency[4] + 1;
)。
randomNumbers.nextInt(6)
生成0-5的數字; 添加一個使它成為1-6。 ++
增加結果數組中與所選數字對應的值。
如果隨機數分布是偶數,則應該有一個大約有100萬的數組。
Use these sample as your reference:
import java.util.Random;
/** Generate 10 random integers in the range 0..99. */
public final class RandomInteger {
public static final void main(String... aArgs){
log("Generating 10 random integers in range 0..99.");
//note a single Random object is reused here
Random randomGenerator = new Random();
for (int idx = 1; idx <= 10; ++idx){
int randomInt = randomGenerator.nextInt(100);
log("Generated : " + randomInt);
}
log("Done.");
}
private static void log(String aMessage){
System.out.println(aMessage);
}
}
您還可以嘗試使用Apache Commons Math庫的RandomDataGenerator來生成隨機數。
Commons Math隨機軟件包包括實用工具
生成隨機數生成隨機數,生成隨機字符串,生成隨機數字或字符串的加密安全序列,生成隨機樣本和排列,分析輸入文件中值的分布,並生成值“類似”文件生成數據中的值,用於分組頻率分布或直方圖
例
RandomDataGenerator randomData = new RandomDataGenerator();
randomData.reSeedSecure(1000);
for (int i = 0; i < 1000; i++) {
value = randomData.nextSecureLong(1, 1000000);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.