2 wkr0103 wkr0103 于 2014.12.13 22:46 提问

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++;
}
}

5个回答

caozhy
caozhy   Ds   Rxr 2014.12.14 00:17

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

wkr0103
wkr0103 那这段代码的意思是不是随机生成一个0~26的数,生成15次,然后把这15个数随机分给一个6行5列的数组
3 年多之前 回复
qq_24039221
qq_24039221   2014.12.14 00:50

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数组。

yangyanggoods
yangyanggoods 别闹,(int)(Math.random()*5+1)的结果明显是1-5
3 年多之前 回复
caozhy
caozhy 回复wkr0103: Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值。因此你说呢?
3 年多之前 回复
wkr0103
wkr0103 包括边界值吗
3 年多之前 回复
u013944979
u013944979   2014.12.14 09:37

随机给一个二维数组赋值

wkr0103
wkr0103 知道啦 谢谢
3 年多之前 回复
u010664312
u010664312   2014.12.14 20:31

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

yangyanggoods
yangyanggoods 别闹,(int)(Math.random()*5+1)的结果明显是1-5
3 年多之前 回复
wkr0103
wkr0103 包括边界值吗
3 年多之前 回复
yangyanggoods
yangyanggoods   2014.12.15 19:41

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

wkr0103
wkr0103 好吧
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!