我使用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);
}
}
}
提前谢谢!
答案 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)
如果您有MIN
和MAX
,并且可以使用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值。