ramdon noise generation

Jul 27, 2004 12 Replies

I need to use FPGA to generate a normal distributed noise. Any idea? I know that we can convert a even distributed ramdon sequence to a normal distributed one. But I forgot the algorithm and I am not sure if it is suitable to implement it in a FPGA.


1) Take FPGA and remove its legs. 2) Use a marker to write 'Heads' on one side, 'Tails' on the other. 3) Throw it up in the air. 4) See which side lands face up. 5) Repeat 3) and 4) until you have enough data.

Or try Google / Google Groups for LFSR, Random, etc. ;-) Also check out the Random article here

formatting link

HTH, Syms.

Symon,

Your method is greatly flawed. In addition to being very slow, it is subject to the imbalance of the weight of the device. You would first have to add weight or trim weight to make sure the toss was fair.

Better to implement something a bit more elegant:

formatting link

"That is So Random!"

Aust> 1) Take FPGA and remove its legs.

There are at least two methods :

1) generate normaly distributed samples (quantized box-muller algorithm), add a few of them (4 may be enough), according to the central limit theorem, it increases the generator's precision

here is an interesting paper

formatting link

2) set the quantization of the noise you wish to produce, generate tables storing values of the integrated density of probability (by software). To generate a noise sample, generate uniformly distributed samples, search in the tables for the nearest element and return this element's index. The indexes returned should be normaly distributed. This is sometimes called the thresholds method.

I may not be very clear but it works perfectly (I've tried it)

Pierre

Nah, a biased coin is perfectly fine:

Flip twice: HH -> try again HT -> Heads TH -> Tails TT -> try again.

Nicholas C. Weaver nweaver@cs.berkeley.edu

Symon,

Gosh, I never thoguht of that: throw a million devices into the air at once!

Aust> Austin,

Yup,

But I was trying to deal with the original generator! But you are absolutely correct! Nice to remember if you suspect someone has an unfair coin......

Best to test the original random number generator (as close to the core of its function).

Then one can add correction for 1/0 density, as you suggest. That does not solve for frequency effects, however.

The NIST suite of tests, or Diehard tests are best applied to the core generator, so you can see its problems. Then there are known and accepted techniques to use a biased generator, or even a RNG with frequency problems to create a better TRNG.

Aust> >

Sounds a little complicated. Any random number generator 101 for me? Plus, how can FPGA tossing give me random number with normal distribution?

sheesh, haven't you heard of the Central Limit Theorem? :-)

-- Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how VHDL, Verilog, SystemC, Perl, Tcl/Tk, Verification, Project Services

Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, BH24 1AW, UK Tel: +44 (0)1425 471223 mail: snipped-for-privacy@doulos.com Fax: +44 (0)1425 471573 Web:

formatting link

The contents of this message may contain personal views which are not the views of Doulos Ltd., unless specifically stated.

Heard of Google?

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required