How to generate an 8 digits random number in Pascal

1 Answer

0 votes
program Random8DigitGenerator;

{$mode objfpc}{$H+}{$J-} // Enable modern Object Pascal mode and long strings (AnsiString)

uses
  SysUtils; // Provides IntToStr, Format, and system utilities

const
  MIN_8_DIGIT_INT = 10000000;
  MAX_8_DIGIT_INT = 99999999;
  RANGE_8_DIGIT   = 90000000; // Size of interval [10000000..99999999]
  CODE_UPPER_BOUND = 100000000; // Upper limit [0..99999999]

{
  Generates a random 8-digit positive integer between 10,000,000 and 99,999,999.
  Guaranteed to start with a non-zero digit (1-9).
}
function Generate8DigitNumber: LongInt;
begin
  // Random(N) returns an integer in the range [0..N-1].
  // Adding MIN_8_DIGIT_INT shifts [0..89999999] to [10000000..99999999].
  Result := MIN_8_DIGIT_INT + Random(RANGE_8_DIGIT);
end;

{
  Generates an 8-character numeric string code between "00000000" and "99999999".
  Preserves leading zeros using Format, suitable for OTPs, PINs, or verification tokens.
}
function Generate8DigitCode: string;
var
  RawValue: LongInt;
begin
  // Generate value in range [0..99999999]
  RawValue := Random(CODE_UPPER_BOUND);

  // Format with '%0.8d' or '%.8d' to pad short integers with leading zeros
  Result := Format('%.8d', [RawValue]);
end;

var
  I: Integer;
  RandomNum: LongInt;
  RandomCode: string;

begin
  // Initialize the built-in pseudo-random number generator seed
  Randomize;

  WriteLn('=== Generating 8-Digit Integers [10000000 to 99999999] ===');
  for I := 1 to 5 do
  begin
    RandomNum := Generate8DigitNumber;
    WriteLn('Generated Integer #', I, ': ', RandomNum);
  end;

  WriteLn;
  WriteLn('=== Generating 8-Digit String Codes [00000000 to 99999999] ===');
  for I := 1 to 5 do
  begin
    RandomCode := Generate8DigitCode;
    WriteLn('Generated Code #', I, ': ', RandomCode);
  end;
end.



{
run:

=== Generating 8-Digit Integers [10000000 to 99999999] ===
Generated Integer #1: 80478658
Generated Integer #2: 59802127
Generated Integer #3: 87880815
Generated Integer #4: 18138074
Generated Integer #5: 73379467

=== Generating 8-Digit String Codes [00000000 to 99999999] ===
Generated Code #1: 56317644
Generated Code #2: 75642168
Generated Code #3: 89172536
Generated Code #4: 87479036
Generated Code #5: 36851336

}

 



answered Oct 2 by avibootz
...