谁能帮忙做下这个算法,我会很感激的,这个题目就是“先输入两个数字,然后随机取25个数字,并让它成5行5列的显示出来”谢谢,你看了题目不要生气啊,是为了让你们起眼一下就看到。

解决方案 »

  1.   

    var
      I:integer
       begin
        Randmize;
         I:Random(100)
         caption:=IntTostr(I)
       end;
      

  2.   

    有算法吗?代码到有
    输入两个数 a,b 
        比较大小,
        得到差 C
       循环,从1到25
         每次取得一个随机数(0到C)之间
             加上MIN(a,b)  并同时按I确定显示值
      

  3.   

    steelxu5(人间漫步) :
    能够写代码看看吗?
      

  4.   

    随机数X在X1和X2之间,X1<=X<X2,那么X:=Random*X2+X1;回答完毕。
      

  5.   

    更正X:=Random*(X2-X1)+X1;不好意思犯了一个小错误
      

  6.   

    type
      TNumbers = array of Integer;implementationfunction TForm1.GetRam(X1, X2, N: Integer): TNumbers;
    var
     X,I:Integer;
     Nu1,Nu2:TNumbers;
     N1,N2:Integer;
    begin
      if N>=1 then
      begin
        if X1>X2 then
        begin
          X:=X1;
          X1:=X2;
          X2:=X;
        end;
        if X2-X1<N then raise Exception.Create('get too more');
        SetLength(Result,N);
        X:=Trunc(Random*(X2-X1)+X1);
        Result[0]:=X;
        if (X2-X1-1)<>0 then
        begin
          N1:=Trunc((X-X1)*(N-1)/(X2-X1-1));
          N2:=Trunc((X2-X-1)*(N-1)/(X2-X1-1));
          if (N1+N2<N-1) then
          begin
            if N1<X-X1 then
              Inc(N1)
            else
              Inc(N2);
          end else if (N1+N2>N-1) then
          begin
            if N1>X-X1 then
              Dec(N1)
            else
              Dec(N2);
          end;
          Nu1:=GetRam(X1,X,N1);
          Nu2:=GetRam(X+1,X2,N2);
          for I:=0 to N1-1 do
            Result[I+1]:=Nu1[I];
          for I:=0 to N2-1 do
            Result[I+N1+1]:=Nu2[I];
          X:=Result[N-1];
        end;
      end;
    end;这个函数可以返回在X1<=X<X2的随机序列。返回值存放在动态数组中,这个函数经过了测试,应该没问题了。在X1,X2之间25个随机序列的调用方法
    Nu:TNumbers;  Nu:=GetRam(X1,X2,25);
      

  7.   

    修改后提高了内存使用效率,减少了数据交换量,这个算法应该不错了。function GetRam(X1, X2, N: Integer): TNumbers;
    var
      Nu:TNumbers;
      K,X:Integer;  procedure DoGetRam(X1,X2,N:Integer);
      var
        N1,N2:Integer;
        X:Integer;
      begin
        X:=Trunc(Random*(X2-X1)+X1);
        Nu[K]:=X;
        Inc(K);
        if (X2-X1-1)<>0 then
        begin
          N1:=Trunc((X-X1)*(N-1)/(X2-X1-1));
          N2:=Trunc((X2-X-1)*(N-1)/(X2-X1-1));
          if (N1+N2<N-1) then
          begin
            if N1<X-X1 then
              Inc(N1)
            else
              Inc(N2);
          end else if (N1+N2>N-1) then
          begin
            if N1>X-X1 then
              Dec(N1)
            else
              Dec(N2);
          end;
          if N1>0 then
            DoGetRam(X1,X,N1);
          if N2>0 then
            DoGetRam(X+1,X2,N2);
        end;
      end;begin
      if X1>X2 then
      begin
        X:=X1;
        X1:=X2;
        X2:=X;
      end;
      if X2-X1<N then raise Exception.Create('get too more');
      K:=0;
      SetLength(Nu,N);
      DoGetRam(X1,X2,N);
      Result:=Nu;
    end;
      

  8.   

    再修正一下输入取值判断function GetRam(X1, X2, N: Integer): TNumbers;
    var
      Nu:TNumbers;
      K,X:Integer;  procedure DoGetRam(X1,X2,N:Integer);
      var
        N1,N2:Integer;
        X:Integer;
      begin
        X:=Trunc(Random*(X2-X1)+X1);
        Nu[K]:=X;
        Inc(K);
        if (X2-X1-1)<>0 then
        begin
          N1:=Trunc((X-X1)*(N-1)/(X2-X1-1));
          N2:=Trunc((X2-X-1)*(N-1)/(X2-X1-1));
          if (N1+N2<N-1) then
          begin
            if N1<X-X1 then
              Inc(N1)
            else
              Inc(N2);
          end else if (N1+N2>N-1) then
          begin
            if N1>X-X1 then
              Dec(N1)
            else
              Dec(N2);
          end;
          if N1>0 then
            DoGetRam(X1,X,N1);
          if N2>0 then
            DoGetRam(X+1,X2,N2);
        end;
      end;begin
      if X1>X2 then
      begin
        X:=X1;
        X1:=X2;
        X2:=X;
      end;
      if X2-X1<N then raise Exception.Create('get too more');
      if N>0 then 
      begin
        K:=0;
        SetLength(Nu,N);
        DoGetRam(X1,X2,N);
        Result:=Nu;
      end else
        Result:=nil;
    end;
      

  9.   

    BlueTrees(蜗牛) : 
    你果然是高手。谢谢你的帮忙!
      

  10.   

    BlueTrees(蜗牛) 
    真是热心快肠啊~,这才叫高手!
      

  11.   

    > 真是热心快肠啊~,这才叫高手!“Give a man a fish; you have fed him for today.  Teach a man to fish; and you have fed him for a lifetime”
      

  12.   

    This question looks like a home work assignment. Do not finish whole home work assignment for other people, give hint, answer specific questions. It's not helping, because that person will be in trouble finding a job when he/she graduates.