2、其次输入伪随机函数,返回int类型,代码主要标签import=1024,自定义默认长度。
3、最后点击F5即可生成随机码。
伪随机m序列生成.m文件:function[mseq]=m_sequence(fbconnection)
n=length(fbconnection)
N=2^n-1
register=[0 1 0 0 1 0 0 0 0 0 0]% 定扰让义移位寄存器大李塌的初始状态
% register=[1 1 1 0 1 1 0 0 0 0 0]%分别定义移位寄存器的三种初始状态
% register=[1 1 0 1 0 1 0 0 0 0 1]%分别定义移位寄存器的三种初始状态
mseq(1)=register(n)
for i=2:N
newregister(1)=mod(sum(fbconnection.*register),2)
for j=2:n
newregister(j)=register(j-1)
end
register=newregister
mseq(i)=register(n)
end
伪随机gold序列.m文件:
function[goldseq]=gold_seq(fbconnection1,fbconnection2)
mseq1=m_sequence(fbconnection1)
mseq2=m_sequence(fbconnection2)
N=2^length(fbconnection1)-1
for shift_amount=0:N-1
shift_mseq2=[mseq2(shift_amount+1:N) mseq2(1:shift_amount)]%移位
goldseq(shift_amount+1,:)=mod(mseq1+shift_mseq2,2)%和移位后的序列进行模为2的相加
end
注:要生成gold序列,需滚圆要连两个m序列
什么是伪随机序列呢?让我们看一个例子。序列α= 0110100,其中0和1的个数相差1。把α看成周期为7的无限序列,左移1位得,α1 = 1101000,把α1也看成周期为7的无限序列。 α= 0110100α1=1101000在一个周期里,α和α1的对应位置元素相同的位置有3个,元素不同的位置有4个,它们的差等于-1,这个数称为α的自相关函数在1处的值,记作。类似地,把α左移2位,3位,…6位,可以求出α的自相关函数在2处,3处,…6处尘旅的值也等于-1。当0 <s <7时,称为α的自相关函数的旁瓣值。从刚才所求出的结果知道,α= 0110100的自相关函数的旁瓣值只有一个:-1。像这样的序列称为伪随机序列或拟完美序列。即,一个周期为v的无限序列,如果在一个周期里,0和1的个数相差1,并且它的自相关函数的旁瓣值只有一个:-派侍凳1,则称它为伪随机序列或拟完美序列。α的自相关函数的旁瓣值的绝对值越大,就表明(或把的0和1互换得到的序列)与α越像。因此如果周期为v的序列α是一个伪随机序列,那么α不管左移几位(只要不是v的倍数),得到的序列都和α很不像,这样就很难分辨出α是什么样子。好比川剧的变脸,由于每一次都变得和演员的脸很不一样,因此很难知道演员自己的脸是什么样子。反之如果演员每一次化装后都跟他自己的脸有许多相同之处,那么就容易辨认演员长得什么样。这说明了用伪随机序列作为密钥序列,是比较安全的。 伪随机序列是用函数生成随机数。它并不真正是随机的。只是比较近似随机 一个简单的随机数产生方法如下: X0=345 Xn=(Xn-1*A+B)/C 其中A,B,C是常数,上式每执行一次就生成一个伪随机数 谈前还可以在数组中填入若干个数然后顺序取出进行模拟。性能好,但是这种随机数就很不象随机数了。 还有就是根据当前系统时间,内存值等等用函数生成了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)