source: cpp/gdk/rndutil.cpp @ 97

Last change on this file since 97 was 89, checked in by sz, 11 years ago

all test applications are compilable again

  • Property svn:eol-style set to native
File size: 822 bytes
Line 
1#include "rndutil.h"
2#include "nonstd_math.h"
3#include <stdlib.h>
4
5unsigned short pseudornd(short x)
6{
7static long seed=0;
8long y;
9if (x<=0) {seed=-x; return 0;}
10seed=(y=(3677*seed+3680)&0x7fffffff)-1;
11return ((unsigned short)y)%(x);
12}
13
14double CustomRnd(double *tab)
15{
16double *range=tab+1+2*randomN((int)(0.5+tab[0]));
17return range[0]+rnd0N(range[1]-range[0]);
18};
19
20double RandomGener::Uni(float begin, float end)
21{
22return begin+(double)rand()*(end-begin)/RAND_MAX;
23}
24
25double RandomGener::GaussStd()
26{
27if (isNextGauss) {isNextGauss=0; return nextGauss;}
28double v1,v2,s;
29do {
30v1=2*rnd01-1; //-1..1
31v2=2*rnd01-1; //-1..1
32s=v1*v1+v2*v2;
33} while (s>=1);
34double mult=sqrt(-2*log(s)/s);
35nextGauss=v2*mult;
36isNextGauss=1;
37return v1*mult;
38}
39
40double RandomGener::Gauss(float m,float s)
41{return m+s*GaussStd();}
42
43RandomGener RndGen;
Note: See TracBrowser for help on using the repository browser.