delphi提取任意长度随机数

介绍了一种使用Delphi实现的生成指定范围内不重复随机数的方法,并提供了完整的代码示例。该方法通过创建一个字符串列表来存储指定范围内的整数,然后通过随机选择并移除已选中的数字来确保生成的随机数不重复。

设定随机数范围, 返回数组长度, 得到一组不重复的随机数


unit Unit11;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm11 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    //生成的随机数函数
    function CreateRandom(const RangeStart, RangeEnd,
      ResultCount: integer): Tarray<Integer>;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form11: TForm11;

implementation

{$R *.dfm}
//CreateRandom(随机数取值范围起始值, 终止值; 返回数组长度)
function TForm11.CreateRandom(const RangeStart, RangeEnd, ResultCount : integer) : Tarray<Integer>;
var
  tmpLst : TStringList; //可以使用泛型列表或数组代替
  I, n: Integer;
begin
  if RangeStart >= RangeEnd then
    raise Exception.Create('错误的随机数范围!');

  if ResultCount < 1 then
    raise Exception.Create('随机数返回数组长度必须大于0!');

  tmpLst := TStringList.Create;
  tmpLst.Capacity := RangeEnd - RangeStart;
  try
    for n := RangeStart to RangeEnd do
    begin
      tmpLst.Add(IntToStr(n));
    end;

    Randomize;

    SetLength(Result, ResultCount);
    for I := 0 to ResultCount do
    begin
      n := Random(tmpLst.Count - 1);
      Result[i] := StrToInt(tmpLst.Strings[n]);
      tmpLst.Delete(n);
    end;
  finally
    tmpLst.free;
  end;
end;

procedure TForm11.btn1Click(Sender: TObject);
var
  MyArr : Tarray<Integer>;
  I : Integer;
  s : string;
begin
  s := '';
  MyArr := CreateRandom(0, 100, 10);
  for I := Low(MyArr) to High(MyArr) do
    s := s + inttostr(Myarr[i]) + ' ';

  ShowMessage(s);

  s := '';
  MyArr := CreateRandom(100, 1000, 15);
  for I := Low(MyArr) to High(MyArr) do
    s := s + inttostr(Myarr[i]) + ' ';

  ShowMessage(s);
end;

end.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值