> 12 are enough, but it might be faster (and a smidgeon better) to add 16=
,
> subtract 8, then shift right 4 places.
Adding half, then subtracting the other half gives zero mean directly.
It means two loops, though, so it won't be faster unless the loop is=20
unrolled.
Jerry
--=20
"I view the progress of science as ... the slow erosion of the
tendency to dichotomize." Barbara Smuts, U. Mich.
=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=
=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=
=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF
Reply by Jerry Avins●October 4, 20032003-10-04
Stan Pawlukiewicz wrote:
> Dimiter wrote:
>=20
>> Hi Guys,
>>
>> I need to generate gaussian white noise on an integer DSP.
>>
>> I have the fast Numerical Recipes generator but it has a log, a sqrt
>> and divides in it.
>>
>> Does anyone know where I can find one or where I can read about how to=
>> write one?
>>
>> Thanks
>>
>> Dimiter
>=20
>=20
> The simplest approximate method is to add 12 uniform independently=20
> distributed random numbers, subtract 6, and divide by 12.
>=20
>=20
12 are enough, but it might be faster (and a smidgeon better) to add 16,
subtract 8, then shift right 4 places.
Jerry
--=20
When a discovery is new, people say, "It isn't true."
When it becomes demonstrably true, they say, "It isn't useful."
Later, when its utility is evident, they say, "So what? It's old."
a paraphrase of William James
=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=
=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=
=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF=AF
Reply by Peter Kabal●October 2, 20032003-10-02
You might want to look at a technical report on the web:
Generating Gaussian Pseudo-Random Deviates
http://www.tsp.ece.mcgill.ca/MMSP/Documents/Reports/2000/KabalR2000c.pdf
It examines the accuracy of the sum of 12 uniforms approach and suggests a
new algorithm that should be easy to implement in fixed point arithmetic.
"Dimiter" <dimiter@sonartech.com.au> wrote in message
news:d57cdd96.0310012139.1f668ad4@posting.google.com...
> Hi Guys,
>
> I need to generate gaussian white noise on an integer DSP.
>
> I have the fast Numerical Recipes generator but it has a log, a sqrt
> and divides in it.
>
> Does anyone know where I can find one or where I can read about how to
> write one?
>
> Thanks
>
> Dimiter
Reply by Gordon Sande●October 2, 20032003-10-02
In article <blhgq2$k6t$1@newslocal.mitre.org>,
Stan Pawlukiewicz <stanp@nospam_mitre.org> wrote:
>Subject: Re: gaussian white noise using only integer arithmetic
>From: Stan Pawlukiewicz <stanp@nospam_mitre.org>
>Reply-To: <3f7c4281$1@pfaff2.ethz.ch>
>Organization: The MITRE Organization
>Date: Thu, 02 Oct 2003 11:38:42 -0400
>Newsgroups: comp.dsp
>
>Andor Bariska wrote:
>> Stan Pawlukiewicz wrote:
>>
>>> Dimiter wrote:
>>>
>>>> Hi Guys,
>>>>
>>>> I need to generate gaussian white noise on an integer DSP.
>>>>
>>>> I have the fast Numerical Recipes generator but it has a log, a sqrt
>>>> and divides in it.
>>>>
>>>> Does anyone know where I can find one or where I can read about how to
>>>> write one?
>>>>
>>>> Thanks
>>>>
>>>> Dimiter
>>>
>>>
>>>
>>> The simplest approximate method is to add 12 uniform independently
>>> distributed random numbers
>>
>>
>> Why 12?
>>
Add 12 uniform random numbers over (0,1) and subtract 6.
The subtract 6 makes for a zero mean.
The add 12 makes for a unit variance.
So the result is standard "reasonable if you are not very fussy" normal.
>Empirical rule of thumb. A professor I had suggested this as a cheap
>method sufficient to do simulations with Kalman filters.
>
>
Reply by Stan Pawlukiewicz●October 2, 20032003-10-02
Stan Pawlukiewicz wrote:
> Andor Bariska wrote:
>
>> Stan Pawlukiewicz wrote:
>>
>>> Dimiter wrote:
>>>
>>>> Hi Guys,
>>>>
>>>> I need to generate gaussian white noise on an integer DSP.
>>>>
>>>> I have the fast Numerical Recipes generator but it has a log, a sqrt
>>>> and divides in it.
>>>>
>>>> Does anyone know where I can find one or where I can read about how to
>>>> write one?
>>>>
>>>> Thanks
>>>>
>>>> Dimiter
>>>
>>>
>>>
>>>
>>> The simplest approximate method is to add 12 uniform independently
>>> distributed random numbers
>>
>>
>>
>> Why 12?
>>
>
> Empirical rule of thumb. A professor I had suggested this as a cheap
> method sufficient to do simulations with Kalman filters.
>
>
And also since the variance of a uniform on (0,1) is 1/12, adding 12
gives you a variance of 1. The the divide by 12 I mentioned before
isn't necessary.
Reply by Stan Pawlukiewicz●October 2, 20032003-10-02
Andor Bariska wrote:
> Stan Pawlukiewicz wrote:
>
>> Dimiter wrote:
>>
>>> Hi Guys,
>>>
>>> I need to generate gaussian white noise on an integer DSP.
>>>
>>> I have the fast Numerical Recipes generator but it has a log, a sqrt
>>> and divides in it.
>>>
>>> Does anyone know where I can find one or where I can read about how to
>>> write one?
>>>
>>> Thanks
>>>
>>> Dimiter
>>
>>
>>
>> The simplest approximate method is to add 12 uniform independently
>> distributed random numbers
>
>
> Why 12?
>
Empirical rule of thumb. A professor I had suggested this as a cheap
method sufficient to do simulations with Kalman filters.
Reply by Andor Bariska●October 2, 20032003-10-02
Stan Pawlukiewicz wrote:
> Dimiter wrote:
>
>> Hi Guys,
>>
>> I need to generate gaussian white noise on an integer DSP.
>>
>> I have the fast Numerical Recipes generator but it has a log, a sqrt
>> and divides in it.
>>
>> Does anyone know where I can find one or where I can read about how to
>> write one?
>>
>> Thanks
>>
>> Dimiter
>
>
> The simplest approximate method is to add 12 uniform independently
> distributed random numbers
Why 12?
Reply by Stan Pawlukiewicz●October 2, 20032003-10-02
Dimiter wrote:
> Hi Guys,
>
> I need to generate gaussian white noise on an integer DSP.
>
> I have the fast Numerical Recipes generator but it has a log, a sqrt
> and divides in it.
>
> Does anyone know where I can find one or where I can read about how to
> write one?
>
> Thanks
>
> Dimiter
The simplest approximate method is to add 12 uniform independently
distributed random numbers, subtract 6, and divide by 12.
Reply by Andor Bariska●October 2, 20032003-10-02
Dimiter wrote:
> Hi Guys,
>
> I need to generate gaussian white noise on an integer DSP.
>
> I have the fast Numerical Recipes generator but it has a log, a sqrt
> and divides in it.
>
> Does anyone know where I can find one or where I can read about how to
> write one?
This has already been discussed many times in comp.dsp. You can search
the archives of comp.dsp with google groups (which seems to be working
again, incidentially).
Also try
http://www.dspguru.com/howto/tech/wgn.htm
Regards,
Andor
Reply by Dimiter●October 2, 20032003-10-02
Hi Guys,
I need to generate gaussian white noise on an integer DSP.
I have the fast Numerical Recipes generator but it has a log, a sqrt
and divides in it.
Does anyone know where I can find one or where I can read about how to
write one?
Thanks
Dimiter