zoukankan      html  css  js  c++  java
  • 生成指定范围的随机数序列

    有这样一个需求,我要生成1,2,3...100,其顺序是随机的。

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j: Integer;
      lst: TList<Integer>;
      rd: TkbmMWRandomPCGUInt32;
      r: Integer;
    begin
    
      Log.TimeStart('random');
      j:=strtoint(Edit1.Text); //生成数字的个数.
      lst := TList<Integer>.Create;
      rd := TkbmMWRandomPCGUInt32.Create;
      for i := 1 to j do
      begin
        r := rd.Random(1, j+1);
        while lst.Contains(r) do
    //    while lst.IndexOf(r)<>-1 do
        begin
          r := rd.Random(1, j+1);
        end;
        lst.Add(r);
      end;
      Log.TimeEnd('random', '生在完毕:'+Edit1.Text);
    
    //  memo1.Lines.Clear;
    //  for i := 0 to lst.count-1 do
    //  begin
    //    memo1.Lines.Add(Format('i=%d value=%d',[i,lst[i]]));
    //  end;
    
      lst.Free;
      rd.free
    end;

     下面是运行结果:

    这个代码中使用了kbmMW随机数生成器TkbmMWRandomPCGUInt32,需要注意的就是Random生成的数字范围,Random(a,b),只生成a与b-1范围内的整数,不含b,例如a=1,b=10,那么只生成1到9间的随机数。

  • 相关阅读:
    linux常用命令
    PHP 魔术方法浅谈
    PHP常用的设计模式
    浅谈Restful
    进程,线程与协程的区别
    http与https的
    get与post的区别
    php连接数据库的两种方式
    DRF框架基本组件之过滤,搜索,排序
    DRF-JWT用户认证
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/11246125.html
Copyright © 2011-2022 走看看