如何构建1024位伪随机码

如何构建1024位伪随机码,第1张

1、首做斗先双击胡贺程序窗口,纯做磨跳转到写代码的界面。

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是常数,上式每执行一次就生成一个伪随机数 谈前还可以在数组中填入若干个数然后顺序取出进行模拟。性能好,但是这种随机数就很不象随机数了。 还有就是根据当前系统时间,内存值等等用函数生成了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12520334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存