2015-03-20 2 views
-4

Я пытался решить проблему. Я должен определить массив с 5 элементами на нем и определить случайный метод генератора с 3 определенными целыми числами i1, i2, i3, которые будут отличаться друг от друга. Поэтому, когда переменные будут сгенерированы они должны быть разными. Я надеюсь, что я ясно. Кто-нибудь, пожалуйста, помогите мне, или любое предложение будет приветствоваться.Как сгенерировать уникальные случайные числа?

import java.util.*; 


public class Array { 

    public static void main(String[] arg) { 
     int[] v = { 1, 2, 3, 4, 5 }; 
     DisplayArray(v); 
     Array n = new Array(); 

     n.randomGenerator(); 
    } 

    private static void DisplayArray(int[] arr) { 
     for (int x : arr) 
      System.out.print(x + " "); 
     System.out.println(); 
    } 

    public int[] randomGenerator() { 

     int[] a = new int[3]; 
     int i1; 
     int i2; 
     int i3; 

     for (int i = 0; i < a.length; i++) { 
      a[i] = (int) (Math.random() * 5); 
     } 
     i1 = a[0]; 
     i2 = a[1]; 
     i3 = a[2]; 

     if (i1 != i2 && i2 != i3 && i1 != i3) { 
      System.out.println(i1 + "," + i2 + "," + i3); 
     } else { 
      if (i1 == i2 && i2 == i3 && i1 == i3) { 

      } 
     } 

     return a; 
    } 
} 
+0

Совет: выполните поиск здесь, так как этот вопрос задавался много раз раньше. :) – WonderWorld

+0

То, что вы описываете, очень неясно. Лучше всего показать, что вы пытаетесь сделать с кодом, и уточнить, какова конкретная проблема. – tnw

+0

Возможный дубликат [Генерация случайных целых чисел в диапазоне с Java] (http://stackoverflow.com/questions/363681/generating-random-integers-in-a-range-with-java) – minarmahmud

ответ

-2

Есть два варианта использования этого:

Одной из возможностей является при создании новой проверки случайных чисел, если это какой-либо из существующих случайных чисел, и если да, то повторите поколение. Теоретически это может занять ДЛИННОЕ количество времени, но на практике это быстро.

Другим вариантом может быть, например, если вы хотите генерировать случайные числа в диапазоне 0-9 (включительно включительно), и если у вас уже есть, например, 3 и 7, чтобы генерировать Math.random()% 8 вместо Math.random()% 10, а затем, если число больше или равно 3, увеличьте его на единицу и если новое число больше или равно до 7, увеличьте его на единицу.

+0

Случайные числа засеяны. Такая проверка не требуется. – tnw

+0

Наверное, вы имеете в виду проверку того, что новое случайное число не является одним из существующих случайных чисел? Да, это необходимо, потому что OP хотел РАЗЛИЧНЫЕ случайные числа, и если вы делаете Math.random()% 10 два раза подряд, вы можете получить два одинаковых значения. – juhist

Смежные вопросы