In order for a credit card number to be valid, it has to be validated by the MOD 10 algorithm. This is an algorithm specifically designed to prevent accidental errors such as typos. Knowing the Major Industry Identifier (MII) and the Issuer Identification Number (IIN) we can prefix a credit card number and then randomly select the rest, as long as they comply to the MOD 10 algorithm.
In order to do this we find which prefixes we can use specifically for American Express cards. We're currently using the following list and randomly generating the rest: