#include<stdio.h>
#include<math.h>
unsigned int Ex_secret[30]={11,4,120,75,170,204,90,59,78,49,//用0~255的数表示8位2进制,一共240位
148,248,190,137,0,9,17,91,174,105,45,124,177,205,57,97,194,155,120,36};
unsigned int K[30];//等式(6)迭代完后的Ki值集合
unsigned int C=0;//初始C的值
long double Q[7];
int i;
long n=262144;//n为图像大小,读取BMP文件时注意进行值传递
void main()
{
long double Ex_pow(int x, int y);
for(i=0;i<30;i++)//等式(5)的实现
{
C=Ex_secret[i]^(C>>3|C<<5);
}
for(i=0;i<30;i++)//等式(6)的实现
{
K[i]=Ex_secret[i]^(C>>1|C<<7);
}
for(i=0;i<7;i++)
{
int j;
int s=0;
for(j=0;j<6;j++)
{
s=s+Ex_pow(256,j)*K[4*i+j];
}
long double W=n+Ex_pow(2,48);
Q[i]=(n+s)/W;
}
double x_u[7][2];
for(i=0;i<7;i++)
{
int j;
for(j=0;j<2;j++)
{
if(j==0)
x_u[i][j]=Q[i];
else
x_u[i][j]=0.5*Q[(i+1)%7];
}
}
//输出产生的(x,u)数对
for(i=0;i<7;i++)
{
int j;
for(j=0;j<2;j++)
{
if(j==0)
printf(“%f “,x_u[i][j]);
else
printf(“%f\n”,x_u[i][j]);
}
}
}
long double Ex_pow(int x, int y)//幂函数
{
int i;
int s=1;
for(i=0;i<y;i++)
{
s=s*x;
}
return (s);
}