利用Python提供的线性结构与算法,实现基于线性反馈移位寄存器(LFSR)的二元伪随机序列的生成、测试、综合。 LFSR伪随机序列的解释: 它是特殊的时间序列s[j],j≥0; 该序列中的数只取0或1,称这样的序列为二元序列; 该序列的前L个值是已知的,其后的值是待生成的; 序列的连续L个值构成一个切片slice,表示为状态向量S[j]=(s[j-L],s[j-L+1,…,s[j-1]),j≥L; 它有L个联结系数,表示为联结向量C=(c[L],c[L-1],…,c[1]),联结系数取值于0或1,或取自整数集; 当j≥L时,s[j]=<c,s[j]>(mod2),先作内积,再作模2操作。 它具有良好的伪随机性:表现上是随机的,内在有生成规律,并且有周期性; 可用于统计学、密码学。 要求如下: 1. 编写程序,完成下述计算任务: 输入:联结向量C,初始状态向量s[0:L] 输出:s[0:2**L],可以输出更长的序列 2. 编写程序,测试LSFR伪随机序列的统计特性。关于伪随机序列的统计特性,请查阅文献。 3. 编写程序,完成下述计算任务: 输入:伪随机序列s 输出:能够生成s的联结向量C 提示:算法不唯一,可自行思考,可查阅资料 4.编写程序,完成下述计算任务: 输入:伪随机序列s,扰动序列e(与s同长的二元序列) 输出:能够生成s+e联结向量C,其中s+e表示两个序列的逐位异或: […,s[i]+e[i],…] 5. 在4的基础上,设计优化版本的算法,使得L+W(e)尽可能小,其中W(e)表示e的重量:e的非0元素的个数。此项计算任务参考2020全国高校密码数学挑战赛第一题。