日期:2014-05-16  浏览次数:20449 次

谁能帮我解释一下 这个扑克牌代码
<script>
var   array1=new   Array(55);

Array.prototype.Random=function()     {
      for(var   i=1;i <this.length;i++){
          var   rnd=Math.floor(Math.random()*(i+0.99999))
          this[i]=this[rnd];//不太明白
          this[rnd]=i;//不太明白
      }
return   this;
}

document.write(array1.Random())
</script>

------解决方案--------------------
1。看为明白可以多看几遍
2。乱用prototype
3。上面代码洗出来的是55张牌,其中有一张白牌

附:

<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=.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>