`
joy_cz
  • 浏览: 131694 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java生成无重复随机数的2种方法

阅读更多
<script language="javascript" type="text/javascript" src="/AD/200602/14.js"></script>

第一种方法,在一个待选数组中随机产生一个数,然后把他放到待选数组的最后,然后从length-1里随机产生下一个随机数,如此类推

public static int[] randoms()
{
Random r = new Random();

int temp1,temp2;
int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};
int len = send.length;
int returnValue[] = new int[22];
for(int i=0;i<22;i++)
{
temp1 = Math.abs(r.nextInt())% len;
returnValue[i] = send[temp1];
temp2 = send[temp1];
send[temp1] = send[len-1];
send[len-1] = temp2;
len--;
}
return returnValue;
}
}

方法二:还是一个固定的无重复的数组,然后把这个数组随机调换位置,多次之后这个数组就是一个无重复的随机数组了。

public static int[] random2()
 {
  int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};
  int temp1,temp2,temp3;
  Random r = new Random();
  for(int i=0;i<send.length;i++) //随机交换send.length次
  {
   temp1 = Math.abs(r.nextInt())%(send.length-1); //随机产生一个位置
   temp2 = Math.abs(r.nextInt())%(send.length-1); //随机产生另一个位置
   if(temp1 != temp2)
   {
    temp3 = send[temp1];
    send[temp1] = send[temp2];
    send[temp2] = temp3;
   }
  }
  return send;
 }

 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics