java中的一个随机函数,看不懂帮忙解释下

public void suiji()
{
int m,n,k=0,k1,k2,k3;
for(m=1;m<=15;m++)
{
k1=(int)(Math.random()*25+1);
for(n=1;n<=2;n++)
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
while(d[k2][k3])!=0&&k!30)
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
}
this.d[k2][k3]=k1;
k++;
}
}

Math.random()产生一个0~1的随机浮点数。如果你要产生一个m~n的整数那怎么办呢?很简单,首先对Math.random()的结果乘以(n-m),使得这个随机数的范围在0~n-m之间
然后取整+m,这样就是m~n之间的整数了。

k1=(int)(Math.random()*25+1); 随机生成一个0~26的整数
k2=(int)(Math.random()*6+1);随机生成一个0~7的整数
k3=(int)(Math.random()*5+1);随机生成一个0~6的整数
然后生成一个数组d[k2][k3],最后将k1赋值个d数组。

随机给一个二维数组赋值

k1=(int)(Math.random()*25+1); 随机生成一个0~26的整数
k2=(int)(Math.random()*6+1);随机生成一个0~7的整数
k3=(int)(Math.random()*5+1);随机生成一个0~6的整数

创造一个1-25之间的数(k1),随机把矩阵里两个为零的数变成k1。重复该过程15次
顺带一提,感觉这个算法效率会很低……