【问题标题】:Implementing Random Int in Java在 Java 中实现随机 Int
【发布时间】:2015-01-12 16:09:36
【问题描述】:

我使用Blue J作为参考。

我需要做的是在我已经定义了 2 个常量 MIN = 60 和 MAX = 180 之后,我应该将处理时间定义为 60 到 240 之间的随机整数,而不是常量 120。

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

这是应该在其中实现的类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);
      }
   }
}

提前谢谢你!

【问题讨论】:

  • 代码中的随机性在哪里?如果您需要 60 和 240 之间的随机数,那么 nextInt(241)+60 就足够了。
  • @Xline 这将给出 60-300 的范围
  • @ElliottFrisch 哈哈,有一段时间不使用 java了

标签: java random int bluej


【解决方案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,我发现它在很多情况下都非常有用。

【讨论】:

  • 可能希望以相同的方式包含或排除两个边界。我认为这是不匹配的。
【解决方案2】:

如果你有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 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多