import java.io.*; import java.lang.*; import java.util.*; public class EventGenerator { int NumberOfEvents; int NumberOfUsers; int event_id; char event_type; int sender_id; int receiver_id; int time; int priority; String message; Random R; public EventGenerator(int EventNumber, int UserNumber) { NumberOfEvents = EventNumber; NumberOfUsers = UserNumber; R = new Random(); event_id = 0; event_type = 'S'; sender_id = -1; receiver_id = -1; time = -1; priority = -1; message = "Initially empty"; } public void output() { try{ FileOutputStream printToFile = new FileOutputStream("events.txt"); PrintStream out = new PrintStream(printToFile); out.print("event_id" + " "); out.print("event_type" + " "); out.print("time" + " "); out.print("receiver_id" + " "); out.print("sender_id" + " "); out.print("priority" + " "); out.println("message"); for (int i = 0; i < NumberOfEvents; i++) { event_id++; // increase event_id for each event time = (int)(R.nextDouble() * 1000); // set randome time receiver_id = 10 * ((int)(R.nextDouble() * NumberOfUsers) + 1); // ended with 0 if (R.nextDouble() > 0.7) { event_type = 'R'; // 30% chance to be a receiving event out.print(event_id + " " + '\t' + " "); out.print(event_type + " " + '\t' + " "); out.print(time + " " + '\t' + " "); out.println(receiver_id + " " + '\t'); } else { event_type = 'S'; // 70% chance to be a sending event sender_id = 10 * ((int)(R.nextDouble() * NumberOfUsers) + 1); if (R.nextDouble() > 0.45) priority = 1; // 55% chance to be NORMAL else if (R.nextDouble() > 0.15) priority = 2; // 30% chance to be RUSH else priority = 3; // 15% chance to be TOP switch((int)(R.nextDouble() * 10)) { case 0: message = "We like CSE373"; break; case 1: message = "CSE373 is interesting"; break; case 2: message = "Assignments are so easy"; break; case 3: message = "I spend little time on projects"; break; case 4: message = "Midterm is coming soon"; break; case 5: message = "I wish to get a high grade"; break; case 6: message = "I am using Java"; break; case 7: message = "Is C++ more efficient?"; break; case 8: message = "We are great programmers"; break; case 9: message = "Always enjoying programming!"; } // end switch out.print(event_id + " " + '\t' + " "); out.print(event_type + " " + '\t' + " "); out.print(time + " " + '\t' + " "); out.print(receiver_id + " " + '\t' + " "); out.print(sender_id + " " + '\t' + " "); out.print(priority + " " + '\t' + " "); out.println(message); } // end else } // end for printToFile.close(); out.close(); } // end try catch (IOException e) { System.out.println("Error in writing events.txt"); } return; // end output } public static void main(String[] args) { try { EventGenerator event = new EventGenerator(Integer.parseInt(args[0]), Integer.parseInt(args[1])); event.output(); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Must specify the number of events and users "); System.out.println("Usage: java EventGenerator EventNumber UserNumber"); } return; } } // end EventGenerator