伪随机序列发生器有多种,先看一种吧
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