教科書の表と同じものです。客の到着間隔とサービスにかかる時間がわかれば、表の全部の欄を埋めることができます。表の仕組みを理解するために、枠になっている欄内に数値を入れて採点してみてください。
[新規問題]をクリックすると到着間隔が乱数で設定されます。サービス時間は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