Und schon wieder Zufallszahlen ...

Post Reply
Message
Author
Miko

Und schon wieder Zufallszahlen ...

#1 Post by Miko »

Hier kommt ein Karton - äh nein, nur ein kleines Programm.
Ich möchte euch bitten, es mal bei euch zu testen.
Fehler und Anregungen bitte hier posten.

Viel Spass ...


// YARG - Yet another random generator
// Version 0.01
// by miko 25.05.2001
//
// mmbtxx@yahoo.de
//
// Nicht erschrecken ! Typischer Code eines C++ - Newbie
// Wer Lust hat, kann sich aus dem Geschnippsel eine Funktion
// oder gar eine Klasse backen.
//
// Dieser Code soll ein Array von MAX_INTEGERS Zellen bauen und dieses
// mit _unterschiedlichen_ Zufallszahlen füllen.
//
// Zum _richtigen_ Einsatz müssen unbedingt noch ein paar Sicherheits-
// routinen eingebaut werden.

#include <iostream> // Bei C stdio.h verwenden
#include <time.h>
#include <cstdlib> // Bei C sollte hier stdlib.h stehen

#define MAX_INTEGERS 6

using namespace std;

struct tm *newtime;
time_t aclock;
bool check=false;
unsigned int array[MAX_INTEGERS];

// Funktion, welche die Sekunden der angefangenen Minute mit den Minuten multipliziert.
int get_seconds()
{
time(&aclock);
newtime = localtime( &aclock );
return (newtime->tm_sec * newtime->tm_min);
}

// Funktion, welche eine Zufallszahl zwischen min und max ausgibt.
int get_random(unsigned int min, unsigned int max)
{
int z=0;
// Ein klein wenig Sicherheit muss sein <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
if (min>max || min==max || min<0)
{
cerr << "Fehler in Funktion get_random.
";
return 0;
}
while (z < min || z > max)
{
z=rand();
}
return z;
}

void main( void )
{
// Initialisierung der Variablen
int loop=1,outerloop=1,innerloop=1, zufall=0;

// Initialisierung des Zufallgenerators
srand(get_seconds());

while (outerloop<=MAX_INTEGERS)
{
while (check==false)
{
zufall=get_random(1,49);

for (innerloop=1;innerloop<=outerloop;innerloop++)
{
// Prüfen, ob die Zufallszahl schon im Array ist.
if (array[innerloop]==zufall) break;
if (innerloop==outerloop) check=true;
}
}
array[outerloop]=zufall;
check=false;
zufall=0;
outerloop++;
}

// Damit wird mein Apache gefuettert:
cout << "content-type: text/html

";
cout << "<HTML>
<HEAD><TITLE>Mikos Zufallszahlen</TITLE></HEAD>
<BODY>
";

for (loop;loop<=MAX_INTEGERS;loop++)
{
// Geht auch mit printf wenns sein muss <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
cout << loop << '\t' << array[loop] << "<br>" << endl;
}

cout << "</BODY>
</HTML>
";
}

// Guten Appetit

Miko

Re: Und schon wieder Zufallszahlen ...

#2 Post by Miko »

So, jetzt läuft es noch etwas besser und die doofen Smilies sind weg <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

// YARG - Yet another random generator
// Version 0.012
// by miko 25.05.2001
//
// mmbtxx@yahoo.de
//
// Nicht erschrecken ! Typischer Code eines C++ - Newbie
// Wer Lust hat, kann sich aus dem Geschnippsel eine Funktion
// oder gar eine Klasse backen.
//
// Dieser Code soll ein Array von MAX_INTEGERS Zellen bauen und dieses
// mit _unterschiedlichen_ Zufallszahlen füllen.
//
// Zum _richtigen_ Einsatz müssen unbedingt noch ein paar Sicherheits-
// routinen eingebaut werden.

#include <iostream> // Bei C stdio.h verwenden
#include <time.h>
#include <cstdlib> // Bei C sollte hier stdlib.h stehen

#define MAX_INTEGERS 6

using namespace std;

struct tm *newtime;
time_t aclock;
bool check=false;
unsigned int array[MAX_INTEGERS];

// Funktion, welche die Sekunden der angefangenen Minute mit den Minuten multipliziert.
int get_seconds()
{
time(&aclock);
newtime = localtime( &aclock );
return (newtime->tm_sec * newtime->tm_min);
}

// Funktion, welche eine Zufallszahl zwischen min und max ausgibt.
int get_random(unsigned int min, unsigned int max)
{
unsigned short z=0;
// Ein klein wenig Sicherheit muss sein
if (min > max || min==max || min<0)
{
cerr << "Fehler in Funktion get_random. ";
return 0;
}

while (z < min || z > max)
{
z=rand()/100000;
}
return z;
}

void main( void )
{
// Initialisierung der Variablen
int loop=1,outerloop=1,innerloop=1, zufall=0;

// Initialisierung des Zufallgenerators
srand(get_seconds());

while (outerloop<=MAX_INTEGERS)
{
while (check==false)
{
zufall=get_random(1,49);
for (innerloop=1;innerloop<=outerloop;innerloop++)
{
// Prüfen, ob die Zufallszahl schon im Array ist.
if (array[innerloop]==zufall) break;
if (innerloop==outerloop) check=true;
}
}
array[outerloop]=zufall;
check=false;
zufall=0;
outerloop++;
}

// Damit wird mein Apache gefuettert:
cout << "content-type: text/html

";
cout << "<HTML> <HEAD><TITLE>Mikos Zufallszahlen</TITLE></HEAD> <BODY> ";
cout << "<table border=1>
";
for (loop;loop<=MAX_INTEGERS;loop++)
{
cout << "<tr>";
// Geht auch mit printf wenns sein muss
cout << "<td>" << loop << "</td><td>" << array[loop] << "</td>
" << endl;
cout << "</tr>";
}

cout << "</table>
</BODY> </HTML>";
}

Post Reply