Delphi生成不重复的随机数单元

核心代码:

type
  TRandomEngine = class(TObject)
  private
    FSelected             : TBits;
    FArrSize, FNumbersUsed: longint;
    FMinNumber, FMaxNumber: longint;
    FUnique               : boolean;
    FRandSeed             : Integer;
    procedure SizeSelArray;
    procedure SetFMinNumber(NewValue: longint);
    procedure SetFMaxNumber(NewValue: longint);
    function GetFNumbersFree: longint;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Reset;
    function GetRandom: longint;
    function IsUsed(Index: longint): boolean;
    property MinNumber: longint read FMinNumber write SetFMinNumber;
    property MaxNumber: longint read FMinNumber write SetFMaxNumber;
    property Unique: boolean read FUnique write FUnique;
    property nRandSeed: Integer read FRandSeed write FRandSeed;
    property NumbersUsed: longint read FNumbersUsed;
    property NumbersTotal: longint read FArrSize;
    property NumbersFree: longint read GetFNumbersFree;
  end;
  1. 私有成员变量:

    FSelected: 一个 TBits 对象,用于跟踪已选择的数字。
    FArrSize: 数组大小,表示在最小和最大数字之间的可能数字数量。
    FNumbersUsed: 已使用的数字数量。
    FMinNumber, FMaxNumber: 定义生成随机数的范围。
    FUnique: 一个布尔值,指示是否要生成唯一的随机数。
    FRandSeed: 一个整数,用于设置随机数种子。

  2. 构造函数和析构函数:

    Create: 初始化 TRandomEngine 对象,创建 TBits 对象,设置一些默认值,并调用 Randomize 函数进行随机数种子的初始化。
    Destroy: 销毁对象,并释放相关资源。

  3. 属性和方法:

    MinNumber 和 MaxNumber: 用于获取或设置生成随机数的范围。
    Unique: 用于获取或设置是否生成唯一的随机数。
    nRandSeed: 用于获取或设置随机数种子。
    NumbersUsed, NumbersTotal, NumbersFree: 分别获取已使用的数字数量、总数字数量和剩余的可用数字数量。
    Reset: 重新设置可用、已使用和剩余的数字数量,以及将 FSelected 数组重置为 false。
    IsUsed(Index: longint): 给定索引,返回该索引对应的数字是否已被使用。
    GetRandom: longint: 生成一个随机数,根据设置判断是否生成唯一的随机数,同时更新相应的计数器和数组。

点击下载单元文件[完整源码]

你可能感兴趣的:(Delphi装轮速跑,随机数)