教科書の表と同じものです。客の到着間隔とサービスにかかる時間がわかれば、表の全部の欄を埋めることができます。表の仕組みを理解するために、枠になっている欄内に数値を入れて採点してみてください。
[新規問題]をクリックすると到着間隔が乱数で設定されます。サービス時間は5分に固定です。到着時刻、サービス開始時刻、サービス終了時刻、サービス開始までの待ち時間の空欄に数値を入れて、[採点]のボタンを押すと採点されます。
間違ったところを訂正して[採点]のボタンを押し全問正解をめざします。正解したら[送信]のボタンを押してください。
[新規問題]を押せばいつでも新しい問題に替わります。そのときは入力した数値がクリアされますから注意してください。
待ち時間が全員0分になることもあります。その場合は簡単過ぎますから、[新規問題]を押して少なくとも一人は待ち時間が1分以上になる例で100%正解にしてから送信してください。
面倒なのでJavaでプログラムを組んでみます。単純な作業の繰り返しですから、それほど難しくはないのですが、変数の名前を工夫しないと繰り返した時に間違うことがあります。
public class Machi01 { public static void main( String[] args ) { int datanum = 100; int kankakumax = 12; int maeTouchaku = 0; int maeShuryou = 0; int kankaku = 0; int touchaku; int kaishi, svjikan, shuryou, machijikan; String fmt = "%f %f %8d %8d %18.16f \n"; for (int i=1 ;datanum>=i ;i++){ touchaku = maeTouchaku + kankaku; if (touchaku > maeShuryou){ kaishi = touchaku; } else { kaishi = maeShuryou; } svjikan = 5; shuryou = kaishi + svjikan; machijikan = kaishi - touchaku; System.out.printf("%5d %5d %8d %8d %5d %8d %5d\n" ,i,kankaku,touchaku,kaishi ,svjikan,shuryou,machijikan); maeTouchaku = touchaku; maeShuryou = shuryou; kankaku = (int)(Math.random()*kankakumax+1); /*1からkankakumaxの乱数*/ }//forの終わり }//mainの終わり }//classの終わり
次の人が到着した時に、前の人のサービスが終わっているかどうかで開始時間が変わります。
$ javac Machi01.java $ java Machi01 1 0 0 0 5 5 0 2 9 9 9 5 14 0 3 9 18 18 5 23 0 4 10 28 28 5 33 0 5 7 35 35 5 40 0 6 8 43 43 5 48 0 7 2 45 48 5 53 3 8 6 51 53 5 58 2 9 1 52 58 5 63 6 10 3 55 63 5 68 8 11 7 62 68 5 73 6 12 2 64 73 5 78 9 13 1 65 78 5 83 13 14 6 71 83 5 88 12 15 7 78 88 5 93 10 16 3 81 93 5 98 12 17 9 90 98 5 103 8 18 3 93 103 5 108 10 19 9 102 108 5 113 6 20 10 112 113 5 118 1 21 12 124 124 5 129 0 22 11 135 135 5 140 0 23 6 141 141 5 146 0 24 10 151 151 5 156 0 25 1 152 156 5 161 4 26 3 155 161 5 166 6 27 6 161 166 5 171 5 28 8 169 171 5 176 2 29 12 181 181 5 186 0 30 5 186 186 5 191 0 31 12 198 198 5 203 0 32 8 206 206 5 211 0 33 7 213 213 5 218 0 34 12 225 225 5 230 0 35 8 233 233 5 238 0 36 10 243 243 5 248 0 37 3 246 248 5 253 2 38 5 251 253 5 258 2 39 11 262 262 5 267 0 40 8 270 270 5 275 0 41 11 281 281 5 286 0 42 5 286 286 5 291 0 43 3 289 291 5 296 2 44 4 293 296 5 301 3 45 4 297 301 5 306 4 46 5 302 306 5 311 4 47 2 304 311 5 316 7 48 12 316 316 5 321 0 49 2 318 321 5 326 3 50 8 326 326 5 331 0 51 9 335 335 5 340 0 52 12 347 347 5 352 0 53 5 352 352 5 357 0 54 4 356 357 5 362 1 55 12 368 368 5 373 0 56 12 380 380 5 385 0 57 3 383 385 5 390 2 58 4 387 390 5 395 3 59 2 389 395 5 400 6 60 5 394 400 5 405 6 61 9 403 405 5 410 2 62 3 406 410 5 415 4 63 8 414 415 5 420 1 64 2 416 420 5 425 4 65 8 424 425 5 430 1 66 4 428 430 5 435 2 67 1 429 435 5 440 6 68 2 431 440 5 445 9 69 4 435 445 5 450 10 70 1 436 450 5 455 14 71 3 439 455 5 460 16 72 11 450 460 5 465 10 73 6 456 465 5 470 9 74 1 457 470 5 475 13 75 10 467 475 5 480 8 76 12 479 480 5 485 1 77 12 491 491 5 496 0 78 2 493 496 5 501 3 79 12 505 505 5 510 0 80 12 517 517 5 522 0 81 1 518 522 5 527 4 82 8 526 527 5 532 1 83 6 532 532 5 537 0 84 7 539 539 5 544 0 85 12 551 551 5 556 0 86 3 554 556 5 561 2 87 2 556 561 5 566 5 88 5 561 566 5 571 5 89 11 572 572 5 577 0 90 2 574 577 5 582 3 91 7 581 582 5 587 1 92 7 588 588 5 593 0 93 1 589 593 5 598 4 94 3 592 598 5 603 6 95 2 594 603 5 608 9 96 9 603 608 5 613 5 97 3 606 613 5 618 7 98 4 610 618 5 623 8 99 9 619 623 5 628 4 100 11 630 630 5 635 0
教科書にあるサービス時間が3から7の一様乱数である時のプログラムにします。
Machi01.java では svjikan = 5; というところがあり、これがサービス時間が5分固定としています。
svjikan = 5; ↓ rand().... を使って3から7の数値になるようにします ↓ 変更はこの1行だけです svjikan = (int)(Math.random() ???????????????????? );
ヒントは
/* 1からkankakumaxのとき */ kankaku = (int)(Math.random()*kankakumax+1);
int a = (int)(Math.random()*12+1) で a には 1から12までの整数の一様乱数(のひとつ)が入ります。その過程の説明です。
式 | 値の範囲 | 値の種類 | 解説 |
---|---|---|---|
Math.random() | 0 ≦ a < 1 | 浮動小数点数 | |
Math.random()*12 | 0 ≦ a < 12 | 浮動小数点数 | 1から12の12種類の数が必要なので12を掛ける |
Math.random()*12+1 | 1 ≦ a < 13 | 浮動小数点数 | 1から12なので1を足す |
(int)(Math.random()*12+1) | 1 ≦ a ≦ 12 | 整数 | (int)で小数点以下が切り捨てられる。 1 ≦ a < 13 の整数と 1 ≦ a ≦ 12 の整数は同じ意味 |
$ javac Machi02.java $ java Machi02 1 0 0 0 3 3 0 2 6 6 6 4 10 0 3 4 10 10 5 15 0 4 6 16 16 7 23 0 5 4 20 23 4 27 3 6 7 27 27 7 34 0 7 9 36 36 5 41 0 8 2 38 41 4 45 3 9 7 45 45 3 48 0 10 8 53 53 3 56 0 11 1 54 56 5 61 2 12 12 66 66 7 73 0 13 2 68 73 4 77 5 14 12 80 80 6 86 0 15 10 90 90 4 94 0 16 4 94 94 7 101 0 17 11 105 105 5 110 0 18 12 117 117 3 120 0 19 11 128 128 7 135 0 20 10 138 138 7 145 0 21 4 142 145 5 150 3 22 12 154 154 4 158 0 23 12 166 166 7 173 0 24 10 176 176 7 183 0 25 12 188 188 6 194 0 26 5 193 194 7 201 1 27 8 201 201 6 207 0 28 9 210 210 4 214 0 29 3 213 214 4 218 1 30 3 216 218 6 224 2 31 12 228 228 5 233 0 32 2 230 233 7 240 3 33 9 239 240 4 244 1 34 3 242 244 5 249 2 35 3 245 249 4 253 4 36 12 257 257 7 264 0 37 4 261 264 3 267 3 38 2 263 267 6 273 4 39 9 272 273 7 280 1 40 8 280 280 3 283 0 41 4 284 284 4 288 0 42 3 287 288 5 293 1 43 12 299 299 7 306 0 44 12 311 311 6 317 0 45 9 320 320 4 324 0 46 10 330 330 5 335 0 47 5 335 335 6 341 0 48 10 345 345 5 350 0 49 5 350 350 3 353 0 50 1 351 353 3 356 2 51 10 361 361 4 365 0 52 7 368 368 5 373 0 53 4 372 373 7 380 1 54 12 384 384 6 390 0 55 11 395 395 5 400 0 56 5 400 400 6 406 0 57 7 407 407 3 410 0 58 11 418 418 3 421 0 59 10 428 428 6 434 0 60 11 439 439 7 446 0 61 7 446 446 7 453 0 62 3 449 453 5 458 4 63 5 454 458 3 461 4 64 11 465 465 5 470 0 65 4 469 470 5 475 1 66 1 470 475 7 482 5 67 10 480 482 4 486 2 68 5 485 486 6 492 1 69 9 494 494 5 499 0 70 11 505 505 6 511 0 71 4 509 511 5 516 2 72 2 511 516 7 523 5 73 1 512 523 7 530 11 74 11 523 530 5 535 7 75 1 524 535 7 542 11 76 8 532 542 4 546 10 77 11 543 546 4 550 3 78 7 550 550 3 553 0 79 1 551 553 5 558 2 80 4 555 558 4 562 3 81 11 566 566 5 571 0 82 1 567 571 7 578 4 83 4 571 578 7 585 7 84 5 576 585 6 591 9 85 8 584 591 4 595 7 86 1 585 595 5 600 10 87 10 595 600 5 605 5 88 9 604 605 7 612 1 89 6 610 612 6 618 2 90 9 619 619 6 625 0 91 8 627 627 3 630 0 92 3 630 630 6 636 0 93 3 633 636 6 642 3 94 1 634 642 6 648 8 95 6 640 648 6 654 8 96 8 648 654 5 659 6 97 3 651 659 7 666 8 98 11 662 666 3 669 4 99 2 664 669 4 673 5 100 4 668 673 6 679 5