My guess is they just did the simple thing and did a 1-100 random number generation, then used the threshold of percentage to determine failures. That's what I would do as a developer. (e.g. percentage success is 90%, so any number above 90 is a failure, being 91-100).

Having said that, there are other ways to be more creative while still technically claiming a specific percentage, but that requires a lot more work.