If you want to create a function $f:[0,1]\to[0,1]$ such that:
- $f$ is increasing
- $f(0)=0$
- $f(1)=1$
First you can consider some parametrized families of functions that satisfy those three conditions.
One such family is $f(x)=x^p$ for $p>0$.
Another is $\frac{(2x-1)^{1/p}+1}{2}$ for an odd integer $p$, which has the "slow start" and "slow finish" when $p>1$.
You can choose the value for $p$ randomly according to some distribution.
@TomKern gave you a family with two parameters to choose.
However, depending on how "random" you want it to look, the technique I was suggesting in the comments is to create a convex combination of such functions.
If you have $n$ functions $f_i$ that each satisfy the three conditions, and you have any positive constants: $c_1, c_2, \dots, c_n$, such that they sum to one, then for $0\le x \le 1$, define:
$$f(x) = c_1 f_1(x) + c_2 f_2(x) + \dots + c_n f_n(x)$$
- For any $0\le x_1 < x_2 \le 1$, since $f_i(x_1)<f_i(x_2)$ and $c_i>0$, we have that $c_i f_i(x_1)<c_i f_i(x_2)$. Since this is true for all $1\le i \le n$, we have that $f(x_1)<f(x_2)$.
- $c_1 f_1(0) + c_2 f_2(0) + \dots + c_n f_n(0) = 0$
- $c_1 f_1(1) + c_2 f_2(1) + \dots + c_n f_n(1) = c_1 + c_2 + \dots + c_n = 1$
For example, your algorithm could pick three positive values $p_1, p_2, p_3$ according to some discrete distribution on the odd integers, and pick $r_1, r_2, r_3$ independently from a uniform distribution on $(0,1)$. Then, define:
$$c_1 = \frac{r_1}{r_1+r_2+r_3}$$
$$c_2 = \frac{r_2}{r_1+r_2+r_3}$$
$$c_3 = \frac{r_3}{r_1+r_2+r_3}$$
$$f(x) = c_1 \frac{(2x-1)^{1/p_1}+1}{2}+ c_2 \frac{(2x-1)^{1/p_2}+1}{2} + c_3 \frac{(2x-1)^{1/p_3}+1}{2}$$
Another neat fact is that function composition preserves the three conditions, which is easily proven:
If we have two functions $f:[0,1]\to[0,1]$ and $g:[0,1]\to[0,1]$ that satisfy all three conditions, then:
- For any $0\le x_1 < x_2 \le 1$, since $0\le f(x_1)<f(x_2) \le 1$, we have that $0\le g(f(x_1)) < g(f(x_2)) \le 1$
- $g(f(0)) = g(0) = 0$
- $g(f(1)) = g(1) = 1$
Therefore, after creating $M$ functions using the convex combination technique described above, and labeling them $1, \dots, M$, you could choose a random permutation of the integers $1, \dots, M$; then compose all $M$ functions in that order.