随机数生成:Nisan - Wigderson与Blum - Blum - Shub生成器解析
1. 伪随机数生成概述
伪随机数生成在计算机科学和密码学中具有重要地位。已知的伪随机生成器通常基于某些函数难以计算的假设,将少量随机比特扩展为大量对所有高效算法而言看似随机的比特。
2. Nisan - Wigderson生成器
2.1 布尔函数的近似难度量化
对于布尔函数 (f: B^n \to B),若存在概率布尔电路 (A) 产生随机比特,其等于 (f) 值的概率为 (1/2)。当对于所有输入为 (n) 且规模为 (s) 的算法(布尔电路) (A),满足 (|\text{prob}{f(x) = A(x): x \leftarrow U_n} - 1/2| \leq \epsilon/2) 时,称 (f) 是 ((\epsilon, s)) - 难的。
2.2 ((k, n, s, t)) - 设计
设 (k)、(n)、(s) 和 (t) 为整数,((k, n, s, t)) - 设计 (D) 是 ({1, \ldots, k}) 的子集序列 (D = (S_1, \ldots, S_n)),满足:
- (#S_i = s);
- 若 (i \neq j),则 (#(S_i \cap S_j) \leq t)。
例如,当 (k = 9),(n = 12),(s = 3),(t = 1) 时,可通过特定方式构造出 ((9, 12, 3, 1)) - 设计 (D = {S_1, \ldots, S_{12}}),如 (S_1 = {1, 2, 3}),(S_2 = {4,