You are mixing up implementing an RNG with using it. It's easy to use an existing RNG to implement other algorithms that need randomness. However, implementing the RNG itself can be quite difficult.
There are some types that seem deceptively easy (LFSR
come to mind), but they need careful selection of parameters or they'll produce very poor quality randomness. There are some others which involve more complex math but produce very high quality of randomness (like Mersenne twister
). There are yet others that produce cryptographically secure random numbers but are computationally more expensive and thus unsuitable for high-throughput applications. A small error in the implementation of any RNG can significantly reduce its quality, so in most cases it's indeed best to use an existing implementation.
Implement: v. "To put into practical effect; Carry out."
If I were to implement Google Analytics on a website, I surely wouldn't be writing Google Analytics code from scratch, I would be taking existing code and adding it or adapting it to the page.
As to the points you're making about RNG, I agree.
My point remains, however:
The Hero engine may have a poor implementation of RNG. It may even possibly (as the OP is claiming) not be 20%, or be broken in some way. But his current sample size is inadequate to demonstrate that. That's all I'm trying to get him to understand.