2017-10-11 49 views
0
import java.util.Scanner; 
import java.util.Random; 

public class Project_2 { 

public static void main(String[] args) // TODO Auto-generated  methodstub 
{ 
    int userLength; 

    Scanner input = new Scanner(System.in); 
    System.out.print("Enter a length for an Array : "); 
    userLength = input.nextInt(); 

    while (userLength < 1) 
    { 
     System.out.print("Enter a length for an Array : "); 
     userLength = input.nextInt(); 
    } 

    int [] arrayFirst = new int [userLength]; 
    System.out.print("The length is: " + arrayFirst.length + "\n"); 
    Random randomInt = new Random(); 

    for (int i = 0; i < arrayFirst.length; i++) 
    { 
     arrayFirst[i] = randomInt.nextInt(100001); 
    } 
} 

寫Java程序,第一提示一個整數數組 長度和「雙精度」排列密度的用戶。您將使用這些 值爲以下實驗創建陣列。如果數值超出預期範圍,還會提示 用戶重新輸入值: 數組的長度應爲正整數,並且密度 應該是double類型,範圍是[0.0,1.0]。排列密度和稀疏數組

編寫一個採用整數長度和密度爲 的double類型作爲參數的方法,並返回一個表示密集數組的 類型的新數組。對於陣列中的每個條目,將密度與[0.0,1.0)範圍內的隨機數進行比較(即0.0,0.0,,但不包括1.0)以確定條目 是否爲0(提示:參見java.util.Random類)。如果條目應該爲0,那麼只需填入條目即可。如果條目應該不爲零,則 用[1,1000000]範圍內的隨機整數(即,1 到100萬)填充它。以這種方式,指定數組長度爲100和密度爲0.25的數組長度導致arrayof長度100在其值等於的 平均75%到0

我對這個問題的第一部分有很好的理解,但我對這個問題的密度方面完全無能。然後我用隨機數填充數組,以獲得這種感覺。然而,當談到這個問題的密度方面時,我完全無能爲力。我所知道的是數組的密度定義爲非零元素的數量與此數組中所有元素的總數的比率。有任何想法嗎?

回答

1

我不想爲你寫的代碼,但你基本上需要做兩件事情之一爲陣列的每個字段:

  • 生成一個隨機數x 1,如果在0〜 x是大於或等於密度,把這個字段設置爲0。
  • 否則,如果x小於密度,該字段設置爲隨機值1和1000000
之間