To elaborate somewhat on Paul's point, generating pseudo-random numbers in parallel requires some amount of care. Usually, when you generate PRNs, you seed the generator with something like the system time down to the millisecond. However, if you do this in a parallel program, you may well seed the generator with the same time on every process, giving you the same pseudo-random sequence on each processor.
PETSc does have a function PetscRandomCreate, but the documentation for it even admonishes you that
...it should NOT be used for sophisticated parallel Monte Carlo methods since it will very likely not have the correct statistics across processors.
You can decide for yourself whether this caveat will apply to your case. Either way, it's always a good idea to use something like a QQ plot to check that the random numbers you're generating have the distribution that you think they do.