请各位高手帮我解释一下这段产生不相同随机数的代码,谢谢了。 这个i就是for里面的i,比如for里的i为3,执行发现相同了,执行i=i-1 注意这里的i = 4,i-1还是3 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果i取3,没明白为什么i=i-1里后面的i会是4?? 因为for(i=0;i<4;i++) 还执行了i++ 还有一个小问题,按照小菜头的说法,那myarray[i]=num这里的数组第一个不就是myarray[1]了,而不是myarray[0]了???? i++是在最后一步执行的,刚才i =3;i-1=2;但是执行到最后还要做个i++;所以还是3;前面次序稍有出入.. <script language="javascript">function generatenum() //产生随机数{var i=parseInt(Math.random()*100);//1-10的随机数var j=parseInt(i/4);var k=i-j*4+1;return k;}function issame(array,num) //判断数组中是否有相同的数字{var i,res=false;for(i=0;i<array.length;i++){ if(array[i]==num)res=true; //如果相同返回true}return res;}</script></HEAD><BODY><center><br><br><br><br><script language="javascript">var myarray=new Array();for(i=0;i<4;i++){num=generatenum();//产生随机数if(issame(myarray,num))i=i-1;else{ myarray[i]=num; }}var s="";for(i=0;i<myarray.length;i++)//列出数组中的数字{s=s+myarray[i]+"<br>";}document.write(s);</script></BODY></HTML>请高手帮我注释一下,主要是for(i=0;i<4;i++){num=generatenum();if(issame(myarray,num))i=i-1;else{ myarray[i]=num; }} 那else{ myarray[i]=num; }这一步是在i++之前还是之后执行???? i++是在整个循环体的最后执行,else{ myarray[i]=num; }在之前执行 抽牌算法|洗牌算法。以下代码,谨供参考:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>JK:支持民族工业,尽量少买X货</title></head><body><pre>洗牌算法:部分代码来自:http://community.csdn.net/Expert/topic/3858/3858964.xml?temp=.5909693fason的回贴。</pre><script language="JavaScript"><!--function getRandomArray(m,n) //得到m张牌里的n张牌 (m>=n>0){ if(n==null || n==m ) return getRandomPlayCard(m); var array1=new Array(m); for(var i=0;i<m;i++) array1[i]=i; var m2=m-0.00001; for(var i=0;i<n;i++) { var rnd=Math.floor(Math.random()*m2); var swap=array1[i];array1[i]=array1[rnd];array1[rnd]=swap; } return(array1.slice(0,n));}function getRandomPlayCard(m) //洗牌{ var array1=new Array(m); for(var i=0;i<m;i++){ var rnd=Math.floor(Math.random()*(i+0.99999)) array1[i]=array1[rnd]; array1[rnd]=i; } return array1;}document.write(getRandomPlayCard(100)+"<br><br>"+getRandomArray(100,5));--> </script></body></html> 正确的JS四舍五入保留N为小数的算法怎么搞? 《JavaScript技术开发大全》分享 来看这个怪问题 为什么我在客户端保存为html可以,但是在服务器上面运行就不可以? java中在如何返回插入记录的id,id是自增列 JSON 的兼容性问题 javascript如何替代字符? 第一次jquery插件,怎么感觉有java的味道呢?各位怎么看? 如何获得对象,在同名对象数组中位置? (一个超连接) js控制,点击button为什么不能提交表单 表格单元格变色的问题 怎么才能让我这个右键菜单弹出的时候不被SELECT下拉框挡住,请高手帮我修改一下!万分感谢!
myarray[i]=num这里的数组第一个不就是myarray[1]了,而不是myarray[0]了????
{
var i=parseInt(Math.random()*100);//1-10的随机数
var j=parseInt(i/4);
var k=i-j*4+1;
return k;
}function issame(array,num) //判断数组中是否有相同的数字
{
var i,res=false;
for(i=0;i<array.length;i++)
{
if(array[i]==num)res=true; //如果相同返回true
}
return res;
}
</script>
</HEAD><BODY><center><br><br><br><br>
<script language="javascript">
var myarray=new Array();for(i=0;i<4;i++)
{
num=generatenum();//产生随机数
if(issame(myarray,num))i=i-1;
else
{
myarray[i]=num;
}
}var s="";for(i=0;i<myarray.length;i++)//列出数组中的数字
{
s=s+myarray[i]+"<br>";
}
document.write(s);
</script>
</BODY>
</HTML>请高手帮我注释一下,主要是
for(i=0;i<4;i++)
{
num=generatenum();
if(issame(myarray,num))i=i-1;
else
{
myarray[i]=num;
}
}
else
{
myarray[i]=num;
}这一步是在i++之前还是之后执行????
{
myarray[i]=num;
}在之前执行
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JK:支持民族工业,尽量少买X货</title>
</head><body>
<pre>
洗牌算法:
部分代码来自:
http://community.csdn.net/Expert/topic/3858/3858964.xml?temp=.5909693
fason的回贴。</pre><script language="JavaScript">
<!--function getRandomArray(m,n) //得到m张牌里的n张牌 (m>=n>0)
{
if(n==null || n==m )
return getRandomPlayCard(m);
var array1=new Array(m);
for(var i=0;i<m;i++)
array1[i]=i;
var m2=m-0.00001;
for(var i=0;i<n;i++)
{
var rnd=Math.floor(Math.random()*m2);
var swap=array1[i];array1[i]=array1[rnd];array1[rnd]=swap;
}
return(array1.slice(0,n));
}
function getRandomPlayCard(m) //洗牌
{
var array1=new Array(m);
for(var i=0;i<m;i++){
var rnd=Math.floor(Math.random()*(i+0.99999))
array1[i]=array1[rnd];
array1[rnd]=i;
}
return array1;
}
document.write(getRandomPlayCard(100)+"<br><br>"+getRandomArray(100,5));-->
</script></body>
</html>