basic_tests.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:py-prng 作者: czechnology 项目源码 文件源码
def autocorrelation_test(generator, n_bits, d, sig_level=None, misc=None):
    if not (1 <= d <= n_bits // 2):
        raise ValueError("Parameter d must be between 1 and [n/2]=%d" % (n_bits // 2))

    # random bits from i to i+d
    generated_bits = deque([generator.random_bit() for _ in range(d)], maxlen=d)

    a = 0
    for i in range(n_bits - d):
        # a += sequence[i] ^ sequence[i + d]
        s_i_d = generator.random_bit()
        s_i_0 = generated_bits.popleft()
        generated_bits.append(s_i_d)
        a += s_i_0 ^ s_i_d

    # Calculate the statistic
    x5 = 2 * (a - (n_bits - d) / 2) / sqrt(n_bits - d)

    if type(misc) is dict:
        misc.update(a=a)

    if sig_level is None:
        return x5
    else:
        limit = -norm.ppf(sig_level / 2)
        if type(misc) is dict:
            misc.update(x=x5, limit=limit)
        return -limit <= x5 <= limit
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号