在写lab的过程当中,需要用到随机生成随机数
要求:
代码:
1 void randomDOAllProcess() throws IntervalConflictException { 2 Set<Process> undoSet = PS.getUndoProcesses(); 3 System.out.println("起始时刻:"+startTime+" "); 4 while(undoSet.size()>0) { 5 ArrayList<Process> list = new ArrayList<Process>(undoSet); 6 Random r =new Random(); 7 int select = Math.abs(r.nextInt(10));//1/10的可能延迟 8 while(select==1) { 9 int randomTime = Math.abs(r.nextInt(10));//延迟时间最大为100 10 startTime+=randomTime; 11 System.out.println("随机选择:不启动任何进程直到"+startTime+" "); 12 select = r.nextInt(2); 13 } 14 int randomIndexProcess = Math.abs(r.nextInt(undoSet.size())); 15 Process randomProcess = list.get(randomIndexProcess); 16 int randomIndexTime = Math.abs(r.nextInt((int)PS.getMaxRunTime(randomProcess))); 17 if(randomIndexTime==0) randomIndexTime++; 18 System.out.println("选择进程:"+randomProcess.getName()+"运行时间"+randomIndexTime); 19 PS.runTime(randomProcess, randomIndexTime); 20 if(randomIndexTime!=0) 21 PS.insert(startTime, startTime+randomIndexTime, randomProcess); 22 startTime+=randomIndexTime; 23 //undoSet=PS.getUndoProcesses(); 24 System.out.println(undoSet.toString()+" "); 25 } 26 }
这里就是用到了random()随机生成数来判断是否延迟,哪个进程运行,运行多久。
Random()创建一个新的随机数生成器。
使用Random类,一般是生成指定区间的随机数字。
可以分为一下几种情况
1.生成[0,1.0)区间的小数
Random rRamdom = new Random(); double x = rRandom.nextDouble();
2.生成[0,2.0)区间的小数
Random rRamdom = new rRandom(); double x = rRandom.nextDouble() * 2;
3.生成[1,2.0)区间的小数
Random rRandom = new Random(); double x = rRandom.nextDouble() * 1 + 1;
4.生成任意整数
Random rRandom = new Random(); int x = rRandom.nextInt();
5.生成[0,100)区间的整数
Random rRandom = new Random(); int x = rRandom.nextInt(10);