It doesn't work because it doesn't do anything.
All it does is add the string "ABCDEFGHIJKLMNOPQRSTUVWXYZ" to itself 5 times, include the interes twice and pass that:
"ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
to the Rnd fucntion. Which almost certainly doesn't know what to do with it...
Throw that away.
Move your valid_chars and valid_int to class level Shared strings.
Create a class level Random instance, and GetLetter and GetDigit methods which use it to generate an index into the appropriate Shared string and return a single character.
Then call them the appropriate number of times.
But...be aware that that won't necessarily generate a valid UK number plate: AA99AAA will not be valid for a lot of years, and AA16III or AA16OOO will never be valid...