假设一个表有n条纪录,我要从中随机抽取m条不重复的纪录,求助算法.(m<n)

解决方案 »

  1.   

    select distinct top m * from yourtable order by newid();
      

  2.   

    const
      n = 100;
      m = 10;
    var
      arrSelect : array[1..m] of integer;
      arrAll : array[1..n] of Integer;
      i,j:Integer;begin
      for i := 1 to n do
        arrAll[i] := i;  Randomize;  for i := 1 to m do
      begin
        j := random(n + 1- i) + 1;
        arrSelect[i] := arrAll[j];
        if j <> n + 1- i then
           arrAll[j] := arrAll[n + 1- i];
      end;
    end;
    // arrSelect中存的就是你要的记录号了,好不容易想出来的