PostgreSQL two different ways to generate a UUID: gen_random_uuid vs uuid_generate_v4? What is the difference between the following two functions


gen_random_uuid() provided by pgcrypto extension
uuid_generate_v4() provided by uuid-ossp extension


Are they both the same behind the scenes? Any performance impacts on using one?
Are they the same?


No. 

The Postgres documetation for uuid-ossp suggests using gen_random_uuid() If you only need randomly-generated (version 4) UUIDs,

The uuid-ossp extension also provides other types of UUID (such as mac-addresses based)


  The difference?


I looked at the source and discovered that 


uuid_generate_v4() uses arc4random to determine the random part.
gen_random_uuid() uses fortuna instead.


Other than that they do the same job.