要求:指定显示一定数目的数字,如显示1到12这些数字,要求数字随机排列并全部显示出来。每次运行程序后 这些数字的顺序都不相同!
代码:
import java.lang.*; import java.util.*;
public class MakeRandomNum { public void getRandom()throws Exception { String [] a=new String[12]; Random rndTemp = new Random(); int flag=1; String rnum=new String("w");//先付一个初始值 for(int i=0;i<12;i++) { do { flag=1; Float num=new Float(rndTemp.nextFloat()*12+1); rnum=num.toString(); rnum=rnum.substring(0,rnum.indexOf(".")); for(int j=0;j<i;j++) { if(a[j].equals(rnum)) { flag=0; // System.out.print("t"); } } }while(flag==0); a[i]=rnum; System.out.println(a[i]); } } public static void main(String args[]) { try{ MakeRandomNum my=new MakeRandomNum(); my.getRandom(); }catch(Exception e) { System.out.print(e); } } }
运行结果:
可能算法不是很优化,在数字为千个以内速度很快,试了个50000的,运行了好几分钟!差点死机!:( 大家来一起看看有没有更好的算法啊?!