在Java中实现Random Int

时间:2014-11-15 08:27:39

标签: java random int bluej

我使用Blue J作为参考。

我需要做的是定义2个常数,MIN = 60和MAX = 180,我已经做过,我应该将处理时间定义为60到240之间的随机整数,而不是常数120. / p>

问题是我不确定该怎么做。

这是一个类TicketCounter,其中应该在其中实现。

public class TicketCounter    
{
   final static int PROCESS = 120;
   final static int MAX_CASHIERS = 10;
   final static int NUM_CUSTOMERS = 200;
   final static int ARR_TIME = 20;
   final static int MIN = 60;
   final static int MAX = 180;

   public static void main ( String[] args) 
   {
  Customer customer;
  LinkedQueue<Customer> customerQueue = new LinkedQueue<Customer>();
  int[] cashierTime = new int[MAX_CASHIERS];    
  int totalTime, averageTime, departs;     

  System.out.printf("%-25.30s  %-30.30s%n", "Number of Cashiers", "Average Time (in seconds)");

  /** process the simulation for various number of cashiers */
  for (int cashiers=0; cashiers < MAX_CASHIERS; cashiers++)
  { 
     /** set each cashiers time to zero initially*/
     for (int count=0; count < cashiers; count++)
        cashierTime[count] = 0;

     /** load customer queue */
     for (int count=1; count <= NUM_CUSTOMERS; count++)
        customerQueue.enqueue(new Customer(count*ARR_TIME));

     totalTime = 0;

     /** process all customers in the queue */
     while (!(customerQueue.isEmpty())) 
     {
        for (int count=0; count <= cashiers; count++)
        {
           if (!(customerQueue.isEmpty()))
           {
              customer = customerQueue.dequeue();
              if (customer.getArrivalTime() > cashierTime[count])
                 departs = customer.getArrivalTime() + PROCESS;
              else
                 departs = cashierTime[count] + PROCESS; 
              customer.setDepartureTime (departs);
              cashierTime[count] = departs;
              totalTime += customer.totalTime();
           }
        }
     }

     /** output results for this simulation */
     averageTime = totalTime / NUM_CUSTOMERS;
     System.out.printf("%10s  %30s%n", (cashiers+1), averageTime);
      }
   }
}

提前谢谢!

2 个答案:

答案 0 :(得分:1)

我不完全确定我是否理解您正在寻找的内容,但我确定您想要随机化一个整数。这可以通过Random class轻松完成。

我不确定您是否想要随机化60-120(MIN-MAX)或60-280之间的数字。是否应该看起来像这样。

Random r = new Random();
int randomInt = r.nextInt(MAX - MIN + 1) + MIN;

此代码现在将变量变为MIN和MAX之间的整数,现在您可以轻松地用常量替换它们或为它们设置值,以获得漂亮且易于理解的代码。

有关代码的确切功能的更多信息,我建议您再次查看Random class,我觉得它在很多情况下非常有用。

答案 1 :(得分:0)

如果您有MINMAX,并且可以使用Random,那么

Random random = new Random();
int MIN = 60;
int MAX = 180;
int val = random.nextInt(MAX + 1) + MIN;

这将生成介于60和240之间的随机值。 Random.nextInt(int)(根据Javadoc),

  

返回伪随机,在0(包括)和指定值(不包括)之间均匀分布的int值。