# How to scale a random based on a function?

Say I have a function function $f(x)$ returning any real between 0 and 1, for a $x$ between 0 and 1.

I want to get $n$ randomly generated values of $x$, based the probablity they occur from $f(x)$.

Example: If $n=5$, and $f(x)$ described a direct ascending line from 0 to 1, I could get $x_1=0.8$, $x_2=0.7$, $x_3=0.75$, $x_4=0.4$, $x_5=0.3$.

Basically, the higher $f(x)$, the more the random value tends to $x$.

Any idea how to achieve that?

-
Do you intend $f$ to be proportional to a probability distribution? Are you looking for an implementable algorithm or just an abstract definition (with perhaps nicer theoretical properties)? –  Henning Makholm Jan 15 '12 at 20:47
Question makes no sense to me. You write "$x$ between $0$ and $1$," and $f(x)$ returns a "real between $0$ and $1$," so where are you getting $x_1=4$, $x_2=3.5$, etc.? Those numbers are not between $0$ and $1$. –  Gerry Myerson Jan 15 '12 at 20:53
I'm looking for an implementable algorithm. I think I do intend $f$ to be proportional to a probability distribution, but I'm not sure what any other option would be? –  Lazlo Jan 15 '12 at 20:53
Oops, you're right Gerry. I'll divide these by 5. –  Lazlo Jan 15 '12 at 22:43
If you can find the antiderivative of $f$, you can use inverse transform sampling (after appropriately rescaling it so that the antiderivative goes from $0$ to $1$ over $[0,1]$). –  Rahul Jan 15 '12 at 22:53

I think I finally understand the question: you want $n$ samples from a random variable whose probability density function is (proportional to) $f(x)$. There is a lot of literature on this problem, and now that I have given you the keywords and keyphrases to look for, you may be able to find what you need and report back to us.