<p>I would like to point out that ANY distribution law (uniform, gaussian, exponential, ...) will produce numbers <code>a</code>, <code>b</code> and <code>c</code> meeting your condition as soon as you normalize and sort them, so there should be some domain knowledge to prefer one over the other.</p>

<p>As an alternative, I would propose to use <a href="https://en.wikipedia.org/wiki/Dirichlet_distribution" rel="nofollow noreferrer">Dirichlet distribution</a> which produce numbers naturally satisfying your first condition: a+b+c=1. It was applied to rainfall modelling as well, I believe (<a href="https://arxiv.org/pdf/1801.02962.pdf" rel="nofollow noreferrer">https://arxiv.org/pdf/1801.02962.pdf</a>)</p>

<pre><code>library(MCMCpack)
abc &lt;- rdirichlet(n, c(1,1,1))
sum(abc) # should output n
</code></pre>

<p>You could vary power law values to shape the data, and, of course, sort them to satisfy your second condition. For many cases it is easy to argue about your model behavior if it uses Dirichlet (Dirichlet being prior for multinomial in Bayes approach, f.e.)</p>
how to generate random numbers with conditons impose in R?
<p>I would like to generate 500 different combination of a,b,and c meeting the following conditions</p>

<ol>
<li>a+ b+ c = 1 and</li>
<li>a &lt; b &lt; c</li>
</ol>

<p>here is a basic sample of generating random numbers, however, I need to generate it based on aforementioned conditions.</p>

<pre><code>Coeff = data.frame(a=runif(500, min = 0, max = 1),
b=runif(500, min = 0, max = 1),
c=runif(500, min = 0, max = 1))
</code></pre>