Hallo,
ich versuch schon seit geraumer Zeit gleichverteilte Zufallszahlen zu erzeugen um damit endlich ein paar Primzahlen zu finden. Doch leider ist es anscheinend nicht sehr leicht, oder kann man ein Transistorrauschen nachahmen?
Ich kenne die Funktion rand(), welche aber nur Pseudozufallszahlen erzeugt, zudem gibt es ja srand(), doch das krieg ich nicht zum laufen
Aber, ich habe in einen schlauen Buch eine Klasse gefunden zum erzeugen von Zufallszahlen, hab aber noch nie mit Klassen gearbeitet und weis daher nicht wie man die richtig in einen Code einbaut. Das Ding sah\sieht so aus:
Code:
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <utility>
#include <map>
class Randint
{
unsigned long randx;
public:
Randint (long s=0)
{
randx=s;
}
void seed (long s)
{
randx=s;
}
long abs (long x)
{
return x&0x7fffffff;
}
static double max()
{
return 2147483648.0;
}
long draw()
{
return randx=randx*1103515245+12345;
}
double fdraw()
{
return abs(draw())/max();
}
long operator()()
{
return abs(draw());
};
};
class Urand : public Randint
{
long n;
public:
Urand (long nn)
{
n=nn;
}
long operator()()
{
long r=n*fdraw();
return (r==n) ? n-1 : r;
}
};
class Erand : public Randint
{
long mittelwert;
public:
Erand (long m)
{
mittelwert=m;
}
long operator()()
{
return -mittelwert*log((max()-draw())/max()+.5);
}
};
int main()
{
Urand draw(10);
map<int,int> eimer;
for(int i=0; i<1000000;i++) eimer[draw()]++;
for(int j=0; j<10;j++) cout<<eimer[j]<<endl;
cin.get();
}; Hoffe ich hab keine Tippfehler beim abschrieben aus den Buch gemacht. Auf jedenfall macht er dies beim kompilieren nicht. Verwende microsoft visual C++ 6.0
Bitte kann mir einer weiter helfen?
Vielen Dank,
MfG
Storm