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
}