应该是用统计学里的假设检验来验证,这里是离散均匀分布,可以用皮尔森卡方检定。
假设检验本身就可能犯第一类错误(拒绝正确结果)和第二类错误(接受错误结果)。
我试过,轻微改变分布还是能通过。
```
import bisect
import random
class Solution:
....def __init__(self, n: int, blacklist: List[int]):
........self.m = n - len(blacklist)
........self.ss = [a - i for i, a in enumerate(sorted(blacklist))]
....def pick(self) -> int:
........r = random.randrange(self.m)
........return r + bisect.bisect_right(
self.ss, r)
```
```
import bisect
import random
class Solution:
....def __init__(self, n: int, blacklist: List[int]):
........self.m = n - len(blacklist)
........self.ss = [a - i for i, a in enumerate(sorted(blacklist))]
....def pick(self) -> int:
........if random.random() < 1 / (100 * self.m):
............r = 0
........else:
............r = random.randrange(self.m)
........return r + bisect.bisect_right(
self.ss, r)
```