I don't understand why you use the term "uniform distribution" or what you mean by "pick uniformly a $p$ from $P$". None of the marginal distributions are uniform (except in maybe a degenerate case). And in terms of notation you're
using the same notation for the parameters of the distribution and realizations from that distribution.
I assume you do want to pick independent random samples from a distribution with such restrictions that you list. One such distribution is the Dirichlet distribution (a multivariate beta distribution):
p1 = 0.3;
p2 = 0.2;
p3 = 1 - p1 - p2;
nSamples = 10;
x = RandomVariate[DirichletDistribution[{p1, p2, p3}], nSamples];
(* {{0.00646779, 0.000392286}, {0.726117, 0.0721349}, {0.476097,
0.523398}, {3.77399*10^-6, 0.000228199}, {0.142504,
0.402989}, {0.839344, 0.146529}, {0.987459, 0.0123547}, {0.096979,
0.239194}, {0.628002, 0.0148397}, {0.978951, 0.00772091}} *)
The above set of random samples have only two values where it's understood that
the third value is 1 minus the sum of the other two. To include the third value
something like the following could be used:
x = Table[Flatten[{x[[i]], 1 - Total[x[[i]]]}], {i, Length[x]}]
(*{{0.00646779, 0.000392286, 0.99314}, {0.726117, 0.0721349,
0.201748}, {0.476097, 0.523398, 0.000504177}, {3.77399*10^-6,
0.000228199, 0.999768}, {0.142504, 0.402989, 0.454507}, {0.839344,
0.146529, 0.0141275}, {0.987459, 0.0123547, 0.000186575}, {0.096979,
0.239194, 0.663827}, {0.628002, 0.0148397, 0.357158}, {0.978951,
0.00772091, 0.013328}} *)
If by "uniformly" you mean that the joint density function is a constant positive number (where it's not zero), then you would use
nSamples = 10;
n = 3;
x = RandomVariate[DirichletDistribution[Table[1, {i, n}]], nSamples];
x = Table[Flatten[{x[[i]], 1 - Total[x[[i]]]}], {i, Length[x]}]