2015-07-03 46 views
-3

我需要在兩個範圍內創建一個隨機數,但我不知道如何。有人能幫助我嗎?如何讓java在兩個範圍內創建一個隨機數(例如5-10和12-17)

+1

蘭特(1,5)產生1-> 5,然後蘭特(1),以決定是否應該在5-10或12-17範圍... –

+0

你的意思是聯盟這兩個範圍? –

+0

[在Java範圍內生成隨機整數]的可能重複(http://stackoverflow.com/questions/363681/generating-random-integers-in-a-range-with-java) –

回答

0

隨機數在0-1之間生成。讓我們用數字< 0.5 5-10和數字> 0.5 12-17來簡單地乘以它們。

0

試試這個: -

class PickRandomFromRange 
{ 
    private final List<Integer> range = new ArrayList<>(); 

    final void addRange(int min, int max) 
    { 
     for(int i = min; i <= max; i++) 
     { 
      this.range.add(i); 
     } 
    } 

    int getRandom() 
    { 
     return this.range.get(new Random().nextInt(this.range.size())); 
    } 

    public static void main(String[] args) 
    { 
     PickRandomFromRange rir = new PickRandomFromRange(); 
     rir.addRange(5,10); 
     rir.addRange(12,17); 
     System.out.println(rir.getRandom()); 
    } 
} 

將上面的代碼基本上只是使所有這些都是你給它的範圍內的號碼列表,然後拾起從列表中選擇一個隨機數,因此一個是來自任何範圍的隨機數。

0

我想出了一個辦法,但是,我不知道它是否是解決我的問題的有效方法。

  if(userInput == 4){ 
      charNumber = 48+random.nextInt(76); 
      if(charNumber>47 && charNumber<58){ 
       outputFile.print((char)charNumber); 
       counter++; 
      } 
      if(charNumber>64 && charNumber<91){ 
       outputFile.print((char)charNumber); 
       counter++; 
      } 
      if(charNumber>90 && charNumber<97){ 
       outputFile.print((char)charNumber); 
       counter++ 
      } 

      if(charNumber>96 && charNumber<123){ 
       outputFile.print((char)charNumber); 
       counter++; 
      } 
     } 
0

範圍5-10和12-17給你總共6 + 6 = 12個可能的選擇。

從5到16中選取一個隨機數。如果數字是11或更多,則向其添加一個。添加一個有效地插入您的分割範圍的差距。

Random myRand = new Random(); 

// Number in range [5 .. 16]. 
int num = 5 + myRand.nextInt(17); 

// Increase numbers beyond the gap. 
if (num >= 11) { 
    num += 1; 
} 
相關問題