2013-04-24 5 views
1

Я пытаюсь создать программу Java, которая генерирует количество мест, взятых в самолете. До сих пор я мог это сделать, но моя проблема заключается в том, что каждый раз, когда я запускаю клиент, генерируемые числа различаются. Мне нужно, чтобы они были одинаковыми каждый раз ...Статические массивы не то же самое [java]

Я не уверен, что я делаю неправильно, может кто-нибудь мне помочь?

import java.util.Random; 
import java.util.Arrays; 

public class Airplane { 
    public static Random randomNumbers = new Random(); 
    public static int[] oSeatLeft = new int[10]; 
    public static int[] mSeatLeft = new int[10]; 
    public static int[] wSeatLeft = new int[10]; 
    public static int oSeat = 0; 
    public static int mSeat = 0; 
    public static int wSeat = 0; 
    public static final int sCheck = 0; 

    public void genWSeats() { 

     int randSeatFill = 0; 
     if (wSeat == 0) { 
      for (int counter = 0; counter < wSeatLeft.length; counter++) { 
       randSeatFill = randomNumbers.nextInt(2); 
       if (randSeatFill == 1) { 
        wSeatLeft[counter] = 1; 
       } 
      } 
      if (wSeat == 0) { 
       wSeat++; 
      } 
     } 
    } 

    public int[] getWSeats() { 
     System.out.println(java.util.Arrays.toString(wSeatLeft)); 
     return wSeatLeft; 
    } 
} 

Цель статического Int wSeat должен быть шашка. Если wSeat больше нуля, то он не должен произвольно генерировать числа для массива. Не уверен, что именно то, что происходит здесь не так ....

+4

Я создаю случайные данные и его выход в случайном порядке. Что это за магия? – John3136

+0

Я изучаю 8O: P –

ответ

2

Используйте Random конструктор с семян

public static Random randomNumbers = new Random(42); 

Таким образом, всегда та же последовательность случайных чисел генерируется. 42 является лишь примером, вы можете использовать любое значение, которое вы хотите.

+0

хорошо, кажется, работает до сих пор. Я просто удалил checker if statement, и ответы остались прежними .... Я предполагаю, что это нормально ... –

+0

Спасибо! Это помогает злой! Поэтому моя проблема теперь ... когда я создаю несколько объектов, являющихся расширением этого класса, случайные числа в каждом классе все те же ... существует ли способ инициализировать только одну переменную, но она генерирует разные числа для каждого класса? –

+0

@Brian Murphy: Я думаю, это может быть немного сложно. Каждому классу понадобится собственный статический экземпляр «Случайный». – MrSmith42

1

Передайте семя при инициализации с помощью Random(long seed). Это гарантирует, что последовательность генерируемых чисел всегда одна и та же (поскольку это генератор псевдослучайных чисел).

1

Pass Seed в конструкторе Random он будет генерировать один и тот же номер каждый раз, когда

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