问题描述
packagestolen;importjava.io.*;publicclassStolen{/****/privateintnumber=9000;//生成个数privatelongrandom[]=newlong[this.number];publiclongCreate(){return(long)(Math.random()*9000+1000);///*101位数,*1002位数...}publicvoidWrite(){Filefile=newFile("c:/random.txt");}publicvoidisSame(inti){booleanblean=false;for(intk=0;k<i;k++){if(this.random[i]==this.random[k]){this.random[i]=this.Create();blean=true;}if(blean){break;}}if(blean){this.isSame(i);}}publicstaticvoidmain(Stringargs[]){Stolenstolen=newStolen();for(inti=0;i<stolen.number;i++){stolen.random[i]=stolen.Create();if(i>0){stolen.isSame(i);}}for(intk=0;k<stolen.number;k++){System.out.println(stolen.random[k]);}System.out.println(stolen.random.length);}}
解决方案
解决方案二:
number=8994时勉强可以出结果,9000时就不行了,是我的程序问题,还是默认堆栈大小不够?
解决方案三:
解释一下你的程序想干什么。否则别人得去猜。
解决方案四:
程序:随即生成1000-9999的全部数字,而且要唯一算法:就是随即生成一个1000-9999的数,放到数组里,为了每次生成的数都唯一,我就遍历整个数组进行比较,找到相同的就再生成一个,然后再重头比较
解决方案五:
报什么错?
解决方案六:
这样应该可以,你试试吧publicclassmyrandom{publicstaticvoidmain(String[]args){//先生成1000~9999的随机数,保证唯一int[]array=newint[9000];inti=0;//赋初值,1000~9999for(i=0;i<array.length;i++)array[i]=i+1000;//每次生成一个随机数r,交换array[r]和array[i]for(i=array.length-1;i>=0;i--){//生成[0,i]之间的随机数,当做下标intr=(int)(Math.random()*(i+1));//交换array[r]和array[i]inttmp=array[r];array[r]=array[i];array[i]=tmp;}for(inte:array)System.out.printf("%d",e);}}
解决方案七:
解决了,谢谢