If I require a pseudo-random number (PRN) in the internal working of a function in liquidity, is there a way to do it? Is there one in Michelson? I already know about the way to send a PRN through RPC call, but I'm looking for something that can be applied inside a function.
If what you mean is a non-predictable source of randomness, no, there is none. Any information that could be used for that could either be predictable by a user, or tempered by a malicious baker.
You should probably use an external source of randomness, as the oracle presented in here.
An improvement of that would be to use commitments, i.e. the oracle would push a hash in the contract before the game, and send the random number (and a nonce) after the game, the contract checking that the hash and the random number match (with the nonce). Commitments prevent oracles from changing the random number during the game...