Problem Statement
- John arrives at time 0.
- John waits for Dr. Wesley to arrive.
- If after waitTime seconds Dr. Wesley has not arrived yet, John goes to take a walk for walkTime seconds.
- John therefore arrives back to the classroom exactly at time waitTime + walkTime.
- If Dr. Wesley has not arrived yet, John waits another waitTime seconds and then proceeds to take a new walk. The process is repeated until John becomes aware that Dr. Wesley has arrived.
This has solved John's patience issues, but it has caused a new problem. When John returns from a walk, if Dr. Wesley is already in the classroom, it will appear that John has arrived late to class. Dr. Wesley does not like that, and he will deny John access to the class if he arrives lateTime or more seconds after the time at which Dr. Wesley arrived.
There are multiple variables that affect Dr. Wesley's arrival time, but for the purpose of the problem, assume that the arrival time will be a real number chosen uniformly from bestArrival to worstArrival, inclusive. Return the probability that John will be denied access to Dr. Wesley's class.
Definition
- Class:
- LateProfessor
- Method:
- getProbability
- Parameters:
- int, int, int, int, int
- Returns:
- double
- Method signature:
- double getProbability(int waitTime, int walkTime, int lateTime, int bestArrival, int worstArrival)
- (be sure your method is public)
Notes
- The returned value must have an absolute or relative error less than 1e-9.
Constraints
- waitTime, walkTime, lateTime and worstArrival will each be between 1 and 10000000, inclusive.
- bestArrival will be between 0 and worstArrival, inclusive.
Examples
20
30
10
0
50
Returns: 0.4
The professor will arrive at some random moment between 0 and 50 seconds, inclusive. During this interval, these are John's activities: He waits from time 0 to time 20, inclusive. He takes a walk between times 20 and 50, non-inclusive. He arrives back at time 50. John will only be too late if the professor arrives while he is away, and more than 10 seconds before he returns. This only happens if the professor arrives strictly between times 20 and 40. The probability that this will happen is (40-20)/(50-0) = 0.4.
20
30
10
30
100
Returns: 0.42857142857142855
If the professor arrives between 30 and 40 seconds or between 70 and 90 seconds, John will be late to the class.
20
40
50
0
300
Returns: 0.0
John's walking time is 40 seconds. Hence, even if the professor arrives while John is taking a walk, John will always be less than 50 seconds late.
10
100
50
59
60
Returns: 1.0
300
50
25
9000
10000
Returns: 0.075
20000
30000
10000
30000
30001
Returns: 1.0
100
200
10
3150
3170
Returns: 1.0
1000000
2000000
100000
0
100000
Returns: 0.0
101
230
10
654
17890
Returns: 0.6637270828498492
120000
180000
150000
600000
1400000
Returns: 0.1125
20
30
10
10
10
Returns: 0.0
20
30
10
90
90
Returns: 1.0
Dr. Wesley will always arrive at time 90 seconds. John will arrive at time 100 seconds after taking two different walks. Since the time difference is equal to 10 seconds, John will be too late.
1000
600
1
17000
17000
Returns: 0.0
20
30
10
89
89
Returns: 1.0
20
30
10
91
91
Returns: 0.0
17
20
14
58798
58818
Returns: 0.3
12
15
20
170324
170340
Returns: 0.0
15
2
19
503939
503951
Returns: 0.0
15
2
5
117525
117528
Returns: 0.0
3
9
18
325671
325685
Returns: 0.0
20
19
7
187871
187881
Returns: 0.0
4
2
6
743659
743670
Returns: 0.0
3
10
1
299006
299016
Returns: 0.6
13
16
2
676576
676595
Returns: 0.631578947368421
11
10
1
93882
93885
Returns: 1.0
8
16
15
70555
70575
Returns: 0.05
5
10
16
601464
601481
Returns: 0.0
6
13
14
945270
945273
Returns: 0.0
5
6
14
957655
957667
Returns: 0.0
20
14
10
671701
671708
Returns: 0.0
19
12
14
37945
37961
Returns: 0.0
10
15
10
69345
69352
Returns: 0.0
2
3
10
801989
802007
Returns: 0.0
5
20
10
867898
867912
Returns: 0.5
13
14
20
689760
689763
Returns: 0.0
910962
967045
672717
181666
181682
Returns: 0.0
344978
621265
104920
168820
168831
Returns: 0.0
413937
86547
53027
413339
413355
Returns: 0.0
703524
56660
492404
318459
318473
Returns: 0.0
62849
693858
997881
73175
73194
Returns: 0.0
417913
368356
150984
321483
321500
Returns: 0.0
988276
280415
234542
582818
582820
Returns: 0.0
227339
168075
318377
311781
311785
Returns: 0.0
331218
763736
991481
539781
539793
Returns: 0.0
715732
403199
315087
614978
614993
Returns: 0.0
622682
765931
57477
722602
722607
Returns: 1.0
972097
20375
392176
172850
172870
Returns: 0.0
482430
438809
594296
761418
761429
Returns: 0.0
372760
42199
516341
568770
568775
Returns: 0.0
707714
583669
347666
655457
655467
Returns: 0.0
114929
200856
606921
715107
715125
Returns: 0.0
732799
3498
803715
508483
508485
Returns: 0.0
935817
538186
937432
743545
743548
Returns: 0.0
964447
85032
89613
997120
997138
Returns: 0.0
574307
845669
533616
266685
266703
Returns: 0.0
733080
137870
836766
573505
573553
Returns: 0.0
91922
208382
639173
231037
231132
Returns: 0.0
18591
245097
740461
209819
209886
Returns: 0.0
693708
922954
719107
900626
900687
Returns: 0.0
964087
294685
751974
840395
840403
Returns: 0.0
179080
230443
798121
503974
503978
Returns: 0.0
834830
483139
164941
836257
836285
Returns: 1.0
507630
853721
815446
249489
249493
Returns: 0.0
716490
905890
901884
497641
497723
Returns: 0.0
195125
142330
890045
458282
458382
Returns: 0.0
721568
358367
247562
43653
43718
Returns: 0.0
41959
815785
940120
728357
728392
Returns: 0.0
60949
935161
482514
783452
783464
Returns: 0.0
127426
194183
837926
825484
825556
Returns: 0.0
461341
411083
395148
608064
608099
Returns: 0.0
946151
514386
488702
882784
882876
Returns: 0.0
296410
467233
959733
8599
8647
Returns: 0.0
395926
301514
831922
773360
773424
Returns: 0.0
47377
414723
874619
300577
300649
Returns: 0.0
113039
751870
991493
135592
135661
Returns: 0.0
293631
164582
894034
211029
211337
Returns: 0.0
192241
124624
346923
882214
882858
Returns: 0.0
298244
729830
893965
576101
576321
Returns: 0.0
785661
230173
351853
301832
302482
Returns: 0.0
189680
6651
906825
280749
280904
Returns: 0.0
44003
564255
639370
264983
265683
Returns: 0.0
384007
83640
535207
485501
485622
Returns: 0.0
587125
705034
841679
281279
282031
Returns: 0.0
388298
609302
9270
279815
280597
Returns: 0.0
441439
228015
769159
639966
640466
Returns: 0.0
675529
766094
687011
479740
480172
Returns: 0.0
636371
607725
668688
547580
547975
Returns: 0.0
784145
18479
824961
592576
593481
Returns: 0.0
205089
913436
315750
957908
958622
Returns: 0.0
937214
463860
309838
944247
944700
Returns: 1.0
552376
859261
834039
797536
797851
Returns: 0.0
645185
755104
300319
684108
684872
Returns: 1.0
425522
385073
485786
333633
334105
Returns: 0.0
460155
751065
784221
478819
479383
Returns: 0.0
942189
448778
201805
13244
13430
Returns: 0.0
38246
892286
396684
46629
66217
Returns: 1.0
412175
387007
62775
537294
577403
Returns: 1.0
865379
225279
21259
191505
200935
Returns: 0.0
752871
241358
762498
15019
51716
Returns: 0.0
851775
59511
20895
626055
689315
Returns: 0.0
187943
307088
578093
19912
105242
Returns: 0.0
429247
768
420025
738845
808770
Returns: 0.0
397417
589366
138587
885436
984029
Returns: 0.0
300064
729117
579025
226555
273756
Returns: 0.0
171266
958428
570961
603112
664105
Returns: 0.0
435940
757549
114932
35541
111482
Returns: 0.0
828978
537765
183384
0
9656
Returns: 0.0
545876
128464
586907
721974
796111
Returns: 0.0
498697
866191
783344
483712
502961
Returns: 0.2215180009351135
461038
172096
876212
630999
660670
Returns: 0.0
322872
26383
39995
662940
669976
Returns: 0.0
70837
596307
287895
892074
913046
Returns: 1.0
460336
885515
640917
0
50255
Returns: 0.0
153596
629825
85134
747461
814959
Returns: 0.0
435529
391868
233066
285055
314994
Returns: 0.0
84952
347328
986386
587196
622791
Returns: 0.0
154261
904502
459190
0
157874
Returns: 0.02288533894118094
808087
370289
760902
0
169637
Returns: 0.0
886325
477955
51428
0
248141
Returns: 0.0
399072
836239
599720
703835
835334
Returns: 0.0
339362
715983
71119
0
75214
Returns: 0.0
325895
384307
922392
563997
879550
Returns: 0.0
89094
974488
167178
192551
577369
Returns: 1.0
38738
275554
17060
496225
986371
Returns: 0.772320900303175
349662
341661
522736
143680
897197
Returns: 0.0
212735
199959
100154
0
170085
Returns: 0.0
620153
991681
249412
675433
900189
Returns: 1.0
141560
743485
770359
0
128268
Returns: 0.0
703661
145018
694831
0
315682
Returns: 0.0
693639
6037
73075
296089
369345
Returns: 0.0
598824
943184
417063
149355
494799
Returns: 0.0
763397
499182
776361
269819
593077
Returns: 0.0
546791
48816
250928
234670
594691
Returns: 0.0
215583
52181
34254
594230
903386
Returns: 0.057986906286793725
112125
938216
814808
968667
971379
Returns: 0.0
433138
597856
95631
863582
863582
Returns: 1.0
515869
635459
872940
714553
714553
Returns: 0.0
777057
60805
927343
173861
173861
Returns: 0.0
85891
78712
94135
377558
377558
Returns: 0.0
419271
756497
417360
468006
468006
Returns: 1.0
745246
786193
136604
338654
338654
Returns: 0.0
374485
38820
836045
265709
265709
Returns: 0.0
988750
537521
547725
189297
189297
Returns: 0.0
236722
572622
322507
258471
258471
Returns: 1.0
181684
713538
871000
972796
972796
Returns: 0.0
201765
166450
691252
567147
567147
Returns: 0.0
686727
473793
98035
555978
555978
Returns: 0.0
699587
60537
428454
654065
654065
Returns: 0.0
466093
432213
990464
933579
933579
Returns: 0.0
462670
228357
316069
248071
248071
Returns: 0.0
894851
21978
195563
688243
688243
Returns: 0.0
567982
367463
472046
645786
645786
Returns: 0.0
707730
48923
664291
726338
726338
Returns: 0.0
151787
414682
779622
591905
591905
Returns: 0.0
737086
520842
86354
923024
923024
Returns: 1.0
110654
439198
134130
373018
614023
Returns: 0.17719134457791333
45888
998669
122059
0
731646
Returns: 0.9372811441598806
811728
414034
65679
0
621099
Returns: 0.0
257845
753255
533795
585673
836339
Returns: 0.0
374864
712562
236878
0
235452
Returns: 0.0
994619
742416
31640
18827
906346
Returns: 0.0
318440
652442
963888
0
189859
Returns: 0.0
834151
8925
606595
0
329619
Returns: 0.0
211581
809384
812504
97495
941581
Returns: 0.0
920224
723627
876236
0
127724
Returns: 0.0
963459
994011
439268
0
876634
Returns: 0.0
966141
193767
5184
117251
172190
Returns: 0.0
135902
487762
127598
0
171943
Returns: 0.20961016150701103
949464
319653
571155
0
470385
Returns: 0.0
367268
795160
146465
9293
138178
Returns: 0.0
131487
882340
295484
0
221321
Returns: 0.40589912389696414
737681
650467
795714
228433
483794
Returns: 0.0
490875
560982
877390
237293
912607
Returns: 0.0
234224
759883
848915
0
568750
Returns: 0.0
113496
837665
204172
136538
688593
Returns: 1.0
504781
544634
19030
285466
997440
Returns: 0.6919620660305011
30325
53751
863797
318428
380591
Returns: 0.0
204601
271926
210630
0
327480
Returns: 0.18717478930010992
38900
487712
491573
1723
153323
Returns: 0.0
706212
118341
442071
0
573249
Returns: 0.0
951687
427004
499350
828983
957745
Returns: 0.0
298601
977218
124565
192164
463100
Returns: 0.6071507662326158
605165
739451
554037
520065
771981
Returns: 0.6621889836294638
730370
645015
734172
0
474528
Returns: 0.0
70371
840430
516031
0
211006
Returns: 0.6664976351383373
185315
716503
164908
316564
338752
Returns: 1.0
127317
980491
278983
242785
601405
Returns: 1.0
254526
668497
355235
70458
458224
Returns: 0.5253116570302708
525130
796222
745530
391397
957121
Returns: 0.08960553202621774
510100
964361
884630
461246
953506
Returns: 0.16196928452443832
41908
414411
349624
0
219293
Returns: 0.29543578682402083
972900
954724
698264
701045
978888
Returns: 0.02155173965152982
265015
839117
460082
0
621369
Returns: 0.5734981951143362
745249
791292
61559
0
23397
Returns: 0.0
100
42
15
110
131
Returns: 0.8095238095238095
1
1
1
3
3
Returns: 0.0
17
47
3
178532
323244
Returns: 0.6875172756924097
2
3
2
1
10000000
Returns: 0.200000020000002
1
1
1
0
10000000
Returns: 0.0
1
1
1
1
1
Returns: 0.0
2
2
2
1
1
Returns: 0.0
10
10
1
100
100
Returns: 0.0
10
10
10
10
10
Returns: 0.0
1
1
1
1
10000000
Returns: 0.0
1
1
10000000
1
10000000
Returns: 0.0
2
15
1
99
10000
Returns: 0.8233511766488234
23322
212322
12232
1000000
10000000
Returns: 0.8498831111111111
3
3
1
10
10
Returns: 1.0
10
10
2
5
25
Returns: 0.4
10
10
10
5
5
Returns: 0.0
1
2
1
0
10000000
Returns: 0.3333333
20
20
10
35
35
Returns: 0.0
3
150
5
35
35
Returns: 1.0
34
43
7
4567
10000000
Returns: 0.4675331223769896
25
25
1
25
75
Returns: 0.48
2
2
2
3
3
Returns: 0.0
1000000
100000
1
1
10000000
Returns: 0.0899991089999109
20
40
100
100
100
Returns: 0.0
2
2
1
0
10000000
Returns: 0.25
20
20
10
71
71
Returns: 0.0
50
50
30
75
75
Returns: 0.0
20
20
20
25
25
Returns: 0.0
5
5
1
10
10
Returns: 0.0
1
2
1
1
10000000
Returns: 0.3333333333333333
5000
5000
1000
9500
9500
Returns: 0.0
2
4
2
3
3
Returns: 1.0
13
55
10
0
567
Returns: 0.6525573192239859
1
2
1
20
20
Returns: 1.0
1
1
10000000
10
10000000
Returns: 0.0
20
30
11
90
90
Returns: 0.0
20
30
10
23
74
Returns: 0.4117647058823529
2
2
1
4
4
Returns: 0.0
20
30
1000000
1000
1000
Returns: 0.0
10
10
1000000
50
90
Returns: 0.0
10
10
1
3
3
Returns: 0.0
40
10
10
40
40
Returns: 0.0
10
10
5
119
119
Returns: 0.0
121
222
101
65
17890
Returns: 0.3529873772791024
20
10
10
20
20
Returns: 0.0
1
1
100
0
10000000
Returns: 0.0
10000000
10000000
10000000
10000000
10000000
Returns: 0.0
30
20
2
49
49
Returns: 0.0
3
3
2
5
5
Returns: 0.0
4
4
3
6
6
Returns: 0.0
10
10
5
17
17
Returns: 0.0
10
10
1
5
7
Returns: 0.0
1
5
6
2
2
Returns: 0.0
1
1
1
100
102
Returns: 0.0
1
5
4
3
3
Returns: 0.0
20
30
9
99
99
Returns: 0.0
100
100
300
150
150
Returns: 0.0
2
5
2
6
6
Returns: 0.0
20
20
10
10
10
Returns: 0.0
30
5
100
65
65
Returns: 0.0
20
30
1
120
120
Returns: 0.0
10
10
1
0
10
Returns: 0.0
9999990
2
1
0
10000000
Returns: 1.0E-7
20
30
1
21
25
Returns: 1.0
1
100
50
70
70
Returns: 0.0
20
30
5
25
25
Returns: 1.0
2
2
1
1
10000000
Returns: 0.2500000250000025
100
42
15
110
130
Returns: 0.85
20
30
10
45
45
Returns: 0.0
10
10
5
19
19
Returns: 0.0
20
30
10
25
25
Returns: 1.0
1
10
1
10
10
Returns: 1.0
20
30
50
50
50
Returns: 0.0
1
2
1
2
2
Returns: 1.0
4
9
1
3
3
Returns: 0.0
1
3
1
1
2
Returns: 1.0
2
2
1
3
3
Returns: 1.0
1
2
1
0
29
Returns: 0.3448275862068966
86
42
24
30
30
Returns: 0.0
1
3
1
1
3
Returns: 1.0
1
29
1
100
100
Returns: 1.0
2000
7000
6000
400
5000
Returns: 0.21739130434782608
5
5
1
11
11
Returns: 0.0
1337
31337
239
21
9999999
Returns: 0.951642693613926
4
4
1
7
8
Returns: 0.0
3
3
1
4
4
Returns: 1.0
20
30
5
50
50
Returns: 0.0
2
4
2
1
1
Returns: 0.0
10
10
1
12
15
Returns: 1.0
1
2
1
10
10000000
Returns: 0.3333333333333333
9000000
9000000
100
9000200
10000000
Returns: 1.0
100
100
1
1
1
Returns: 0.0
10
10
5
15
15
Returns: 1.0
1
2
1
1
5
Returns: 0.5
100
100
50
175
175
Returns: 0.0
99
200
100
101
101
Returns: 1.0
5
6
5
10
10
Returns: 0.0
10
10
1
5
19
Returns: 0.6428571428571429
8
2
1
11
11
Returns: 0.0
5
5
1
6
6
Returns: 1.0
2
3
1
1
1
Returns: 0.0
20
20
1000
30
30
Returns: 0.0
100
100
99
150
150
Returns: 0.0
2000000
3000000
1000000
9999999
9999999
Returns: 0.0
10
30
1
30
30
Returns: 1.0
1
10
1
2
3
Returns: 1.0
2
1
1000000
0
10000000
Returns: 0.0
3
600
1
0
10
Returns: 0.7
10
2
1
2
2
Returns: 0.0
1000
566
125
1700
852129
Returns: 0.2815790618617192
1000
600
100
17502
17502
Returns: 0.0
2
4
3
4
4
Returns: 0.0
20
30
10
21
21
Returns: 1.0
20
30
20
25
25
Returns: 1.0
20
100
2
128
8997
Returns: 0.817566805727816