簡體   English   中英

用Java生成的隨機數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM