作者gene07 (-.-)
看板java
标题[问题] 乱数怎麽不重复...
时间Tue Nov 23 22:26:31 2010
int[] dealcard = new int[52];
int ij;
int[] cards = new int[52];
cards={里面有52个数字但没有0}
for(i=0;i<52;i++)
{ j=(int)(Math.random()*52);
if(cards[j]==0) //这边是判断cards取乱数的那个空间
是否以机被取过
{
j=(int)(Math.random()*52);
}
dealcard[i]=cards[j]; //把cards[j]的值传到dealcard
cards[j]=0;//然後把那个以传送过的阵列的空格传0进去
}
好怪...我是不是少了哪个判断..
因为不管怎麽取..
dealcard印出来都会有0...
可不可以告诉我 我错在哪里..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.217.163.164
1F:推 LPH66:因为你只重取了一次 如果重取又是0就会出事 11/23 22:52
2F:推 swpoker:if(cards[j]==0) --> while(cards[j]==0) 11/23 22:58
3F:→ gene07:原来如此...用continue也可以罗0.0 11/23 23:56
※ 编辑: gene07 来自: 61.217.163.164 (11/23 23:57)
4F:推 slalala:用杂凑表 比较简单XD 11/24 00:26
5F:推 csihcs:我会考虑用List的get和remove搭配得到不重复的效果 11/24 01:08
6F:→ csihcs:这样可以省掉检查的时间,但需要较多的空间,不过看到Array 11/24 01:10
7F:→ csihcs:想来你应该就不会介意使用太多空间的问题了 11/24 01:12