伪代码:
int vec[30];
int rand();产生任意随机数的函数,自己去找函数库
int temp;
for(int i=0;i<30;i++)
{
   temp=rand(); 
   vec[i]=temp%101;//(得出0---100的随机数)
}

解决方案 »

  1.   

    极度无聊,帮你做一个
    int rand[30];
    for(int i=0;i<=29;i++){
      rand[i]=(int)(Math.random()*100);
      for(int j=0;j<i;j++)
         if(temp==rand[j])
             i--;
    }
      

  2.   

    int rand[30];
    for(int i=0;i<=29;i++){
      rand[i]=(int)(Math.random()*100);
      for(int j=0;j<i;j++)
         if(rand[i]==rand[j])
             i--;
    }写错了,不好意思
      

  3.   

    何不参照发牌程序设计思想,把0-100压入vector,然后取一次随机数就弹出一个,取一次弹出一个,这样逻辑就会清晰一些吧。
      

  4.   

    对不起,忘记楼主还需要是不同的随机数了,这个算法看来是不行了。还不如直接像TourWind说的那样。看来我总是把简单的问题想复杂了。
      

  5.   

    不过,其实只要把随机数当成是vector的位置的话,这个想法也可以实现,只是这样太浪费资源,而且也没这个必要。
      

  6.   

    如果是整数的话,可以这样一来:开一个数组t[101],若产生一个数i,则 t[i]=1,以此即可避免相同随机数了.
      

  7.   

    Sorry!我没看清for(int j=0;j<i;j++)
         if(rand[i]==rand[j])
             i--;
    很好!
      

  8.   

    写了个demo给你:import java.util.Random;
    import java.util.Arrays;
    public class RadomInts{
      public int[] getInts(int MAX,int NEED){
        int[] ints=new int[MAX];
        int[] returnInts=new int[NEED];
        //产生整数序列
        for(int i=1;i<=MAX;i++){
          ints[i-1]=i;
        }
         //洗牌 (随机产生两个[0,MAX)的整数作为数组的下标,交换其值。共交换MAX/2(多少不限)次。
        int temp;
        int t1;
        int t2;
        Random a=new Random();
        for(int i=0;i<MAX/3;i++){ 
          t1=a.nextInt(MAX);
          t2=a.nextInt(MAX);
          temp=ints[t1];ints[t1]=ints[t2];ints[t2]=temp;
          
        }
        for(int i=0;i<NEED;i++){
          returnInts[i]=ints[i];
        }
        Arrays.sort(returnInts);
        return returnInts;
      }
    }有一个细节异常还得处理:即NEED>MAX时的异常处理。
      

  9.   

    有必要这么复杂吗private boolean[] m_bArray;public int[] fillRand(int a_Max, int a_Need)
    {
      m_bArray = new boolean[a_Max];
      Randomize();   //PsuedoCode, randomize seed
      for(int i = 0; i < a_Need; i++)
      {
         getRand(a_Need);
      }  int[] ret = new int[a_Need];
      int counter = 0;  for(int j = 0; j < a_Max; j++)
        if(m_bArray[j])
          ret[counter++] = j;
    }public void getRand(int a_Need)
    {
      int ret = getRand(0, a_Need);  //PseudoCode, get random number
      if(!m_bArray[ret])
        m_bArray[ret] = true;
      else
        getRand(a_Need);
    }当中的PseudoCode换掉就可以了
      

  10.   

    int[] p = new int[31];
    int i=0;
    while(i <=30) {
      int aa=(int)(Math.random()*(100)+1);
      for(int j = 0; j<=30; j++)
        if(p[j] == aa)
          break;
        else
          p[i] = aa;
      i++;
    }
    for(i=1;i<=30;i++)
    {
     out.println(p[i]);
     out.println("&nbsp");
    }
      

  11.   

    严重同意jeickey(java酱~~) 的算法