伪随机序列发生器有多种,先看一种吧
function [row, col] = randinterval(matrix, count, key)
%计算间隔的位数
[m,n] = size(matrix);
interval1 = floor(m*n/count)+1;
interval2 = interval1 - 2;
if interval2 == 0
errot('载体太小不能将信息隐藏进去');
end
%生成随机序列
rand('seed', key);
a = rand(1, count);
%初始化
row = zeros([1 count]);
col = zeros([1 count]);
%计算row和col
r = 1;
c = 1;
row(1,1) = r;
col(1,1) = c;
for i =2:count
if a(i) >= 0.5
c = c + interval1;
else
c = c+interval2;
end
if c>n
r = r+1;
if r>m
error('载体太小不能将密码信息隐藏进去');
end
c = mod(c, n);
if c==0
c = 1;
end
end
row(1,i) = r;
col(1,i) = c;
end
基本思想:
先通过rand('seed', key);
设置一个种子,控制随机序列产生
产生好随机序列a = rand(1, count);
之后
循环遍历随机序列a
中的值,如果大于0.5, c = c + interval1;
小于则c = c+interval2;
这样控制了列的随机,行随机是显然没有的。。
具体原理emmm
网友评论