我的随机数生成函数
public void productRand()
{

while(index<3)
{
rand[index]=new Random().nextInt(20);
for(int i=0;i<index;i++)
{
if(rand[index]==rand[i])
{
index--;
}
} index++;
}
mt.setTitle("a,b,c"+rand[0]+","+rand[1]+","+rand[2]); }
菜单调用的随机数方法if(milab=="开始")
{
isbegin=true;
ispressed=false;
isshow=0;
storeindex=0;
sdlist.clear();
mt.productRand();

repaint();
}
但是我遇到的问题是 我每次点过开始菜单后 生成的随机数还是第一次生成的那一组 只有当关闭程序后再运行才生成新的一组  求解答 谢谢

解决方案 »

  1.   

    直接
    while (index < 3) {
    rand[index] = new Random().nextInt(20);
    index++;
    }
    不就能生成3个随机数了吗?
    我不明白为什么你还要用一个for循环不断的把原来的值覆盖掉,搞不清你的逻辑。
      

  2.   

    你那生成的随机数可能重复 我是要生成3个不重复的随机数!~晕!~·我的问题不在for循环上!~
      

  3.   

    while(index<3)
    {
    rand[index]=new Random().nextInt(20);
    修改为Random rand = new Random();
    while(index<3)
    {
    rand[index]=rand.nextInt(20);
    因为在同一毫秒中创建的Random对象,生成的随机系列是完全一样的的。又或者你改用java.security.SecureRandom
      

  4.   

    while(index<3)的前面需要index=0;吧?
      

  5.   

    不知道这个符不符合你的要求import java.util.Random;
    public class TestRandom {
       
    public static void main(String args[]){
    TestRandom tr=new TestRandom();
    tr.random();
    }


    public void random(){
    int[] r = new int[3];
    for(int i=0;i<3;i++){
      r[i]=new Random().nextInt(20);
      if(i==0)
      System.out.println(r[i]);
      else{
      if(r[i]==r[i-1])
      i--;
      else
      System.out.println(r[i]);
      }
    }

    }

    }
      

  6.   

    在程序初始化中 初始化过index的值了!~
      

  7.   

    谢谢大家 已经找到问题所在了  index是全局变量 没有重置0  呵呵 谢谢大家!~