I'm making a circuit that draws a random amount of current by switching parallel resistors on or off. The resistances increase by factors of two from resistor to resistor, so this can be modeled as generating a word by randomly setting each bit. With a 50/50 chance of each one being on or off, the generated words follows a uniform distribution.
I want the current to be normally distributed. I can set the probability of each resistor being on or off arbitrarily. Is there any way to use this capability to get a normal distribution?
I'm leaning towards there not being one, or else there would be no need for the Box-Muller transform. But if I'm wrong, this method would be a big help.
I'm not sure I understand the circuit set-up--in particular how many 0/1 random variables you can generate, or whether you are talking about a discrete or continuous uniform distribution. Also, I don't know what operations you can perform on the uniform random variables. So I can only make generic suggestions--I hope $\ge 1$ useful ones.
(1) By summing a large number of $X_i \sim \mathsf{Bernouli}(p=.5)$ random variables (derived from _discrete uniform) you can get a binomial random variable that may be indistinguishable from normal.
In the R simulation below I generate 100 Bernoullis and normalize to get a RV $Z$ that is perpaps close enough to $\mathsf{Norm}(0,1).$ This procedure is replicated to get 1000 $Z$'s. They are close enough to normal to look 'good' (essentially linear) in a normal probability plot, but not good enough to fool a Shapiro-Wilk test for normality (not shown).
(2) If you have continuous standard uniforms, summing 12 of them and subtracting the number 6, will get you very close to standard normal. (This was the method of generating normal variates used in the early days of computing when only the four basic arithmetic operations were 'cheap'.)
(3) If you can generate continuous standard uniform random variables, you can get standard exponential ones, and then use Box-Muller.
(4) If you can generate continuous standard uniform random variables, you can use Wichura's rational function approximation to the inverse standard normal CDF $\Phi^{-1}(U) \sim \mathsf{Norm}(0,1).$
My suggestion (4) is now the method used in R statistical software to get standard normal random variables:
runifis a source of continuous standard uniforms;qnormis the inverse standard normal CDF ('quantile function'); andrnormgenerates standard normals using the method just described. (Legacy and efficiency issues limit this exact demo to one random variable at a time, but the method is sound.)