Thread View: de.comp.lang.c++
12 messages
12 total messages
Started by Arnold Erbsloeh
Tue, 02 Apr 1996 16:03
Zufallsfunktion unter C++?
Author: Arnold Erbsloeh
Date: Tue, 02 Apr 1996 16:03
Date: Tue, 02 Apr 1996 16:03
1 lines
462 bytes
462 bytes
Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl RND?
Re: Zufallsfunktion unter C++?
Author: Kurt Watzka
Date: Tue, 02 Apr 1996 20:49
Date: Tue, 02 Apr 1996 20:49
14 lines
915 bytes
915 bytes
erbsloeh@ind.uni-stuttgart.de (Arnold Erbsloeh) writes: >Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl RND? Leider, oder besser gluecklicherweise, nicht. Aber die Standart C Bibliothek gibt es auch unter C++. Je nach Entwicklungsstand des Compilers entweder "#include <cstdlib>" oder "#include <stdlib.h>", und dann heisst sie, wer haette es gedacht, rand(). Kurt -- | Kurt Watzka Phone : +49-89-2180-6254 | watzka@stat.uni-muenchen.de
Re: Zufallsfunktion unter C++?
Author: Thomas Falk
Date: Wed, 03 Apr 1996 07:30
Date: Wed, 03 Apr 1996 07:30
11 lines
799 bytes
799 bytes
In article <4jrj46$5580@info4.rus.uni-stuttgart.de>, erbsloeh@ind.uni-stuttgart.de (Arnold Erbsloeh) writes: >Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl RND? > In der libg++ gibt es eine Klasse fuer die Generierung von Zufallszahlen unterschiedlichster Verteilungen. Ansonsten koennen ja auch noch die Standard- C-funktionen rand und random verwendet werden. Bye Thomas
Re: Zufallsfunktion unter C++?
Author: Dietmar Kuehl
Date: Wed, 03 Apr 1996 13:46
Date: Wed, 03 Apr 1996 13:46
94 lines
2868 bytes
2868 bytes
Hi,
Kurt Watzka (watzka@stat.uni-muenchen.de) wrote:
: erbsloeh@ind.uni-stuttgart.de (Arnold Erbsloeh) writes:
: >Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl RND?
: Leider, oder besser gluecklicherweise, nicht. Aber die Standart C Bibliothek
: gibt es auch unter C++.
: Je nach Entwicklungsstand des Compilers entweder "#include <cstdlib>" oder
: "#include <stdlib.h>", und dann heisst sie, wer haette es gedacht, rand().
Damit man tatsaechlich Zufallszahlen bekommt, sollt man allerdings
vorher 'srand()' mit einem geeigneten, halbwegs zufaelligen Wert (der
Zeit, der Prozess ID, der Position der Maus, oder was man halt gerade
hat) aufrufen. Hier ist ein Beispiel, wie man es machen koennte (zu beachten ist
allerdings, dass der Startwert nicht unbedingt in jedem Program anders ist: etwa wenn
das Program innerhalb der Genauigkeit von 'time()' zweimal aufgerufen wird...):
//--- rand.h ---
class RND
{
private:
struct Init
{
Init(int def);
};
static Init init;
public:
int max_int() const;
int rnd_int() const;
int operator()() const { return rnd_int(); }
double max_dbl() const { return 1.0; }
double rnd_dbl() const { return double(rnd_int()) / double(max_int()); }
};
extern RND rnd;
//--- rand.cc ---
#include <stdlib.h>
#include <limits.h>
#include <time.h>
#ifndef RAND_MAX
# define RAND_MAX INT_MAX
#endif
RND::Init::Init(int def)
{
typedef unsigned int uint;
uint seed = 1;
time_t t = time(0);
if (t != -1)
seed = uint(t);
else
{
clock_t c = clock();
if (c != -1)
seed = uint(c);
// else
// do something else e.g. use 'gmtime()'.
}
srand(seed);
}
RND::Init RND::init = 1;
RND rnd;
int RND::max_int() const { return RAND_MAX; }
int RND::rnd_int() const { return rand(); }
//--- tst.cc ---
#include <iostream.h>
int main()
{
cout << rnd() << endl;
return 0;
}
Das kann man sicher noch besser machen, aber fuer den Anfang sollte es
reichen...
--
dietmar.kuehl@uni-konstanz.de
http://www.informatik.uni-konstanz.de/~kuehl
I am a realistic optimist - that's why I appear to be slightly pessimistic
Re: Zufallsfunktion unter C++?
Author: Ralf W. Stephan
Date: Wed, 03 Apr 1996 14:51
Date: Wed, 03 Apr 1996 14:51
16 lines
1012 bytes
1012 bytes
Arnold Erbsloeh writes: > Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl RND? Nein. Eine solche ist aber meistens in den mitgelieferten Libraries enthalten. Suche in der Dokumentation nach rand(), srand(), random(). Oder Du fragst am besten in einer Newsgroup, die sich mit Deinem speziellen Compiler befaßt. ralf -- "In some ways the online environment in 1996 feels like Hong Kong in the last days of British rule: a very free community wondering what's going to happen as the forces of law and order start moving in." --Charles Platt PGP: 1024/0xA713ECE9 2047/0xC8E605F5 keys on servers
Re: Zufallsfunktion unter C++?
Author: Oliver Michels
Date: Thu, 04 Apr 1996 04:48
Date: Thu, 04 Apr 1996 04:48
70 lines
2334 bytes
2334 bytes
Arnold Erbsloeh (erbsloeh@ind.uni-stuttgart.de) wrote:
: Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl RND?
Ich hoffe, dass mir niemand boese ist, wenn ich jetzt einige Zeilen Code
poste. Ich habe vor einiger Zeit eine Klasse zur Erzeugung von
Zufallszahlen geschrieben, habe bis jetzt aber noch keinen richtig
guten Pseudzufallszahlenalgorithmus implementiert, obwohl ich das
noch machen wollte. In der momentanen Version benutze ich einfach nur
den Aufrauf rand aus der Standardbibliothek.
Getestet ist der Code auf Linux mit gcc 2.6.3, 2.5.8 und auf
SUN mit CC-4.0.1 und gcc 2.7.0
/* Klassendefinition */
/* Random-Generator */
/* zufall.h */
class Zufallsgenerator {
public :
double GibZahl (const int scale);
int Initialisiere (void);
}; /* class Zufallsgenerator */
/* Klassenimplementierung */
/* Random-Generator */
/* zufall.cc */
#ifndef STDLIB_H
#define STDLIB_H
#include <stdlib.h>
#endif
#ifndef TIME_H
#define TIME_H
#include <time.h>
#endif
#ifndef IOSTREAM_H
#define IOSTREAM_H
#include <iostream.h>
#endif
#include "zufall.h"
int Zufallsgenerator::Initialisiere (void)
{
unsigned int seed;
time_t zeit;
time_t* zzeit = new time_t;
zeit = time (zzeit);
seed = (unsigned int) zeit;
srand (seed);
delete zzeit;
return 0;
}
double Zufallsgenerator::GibZahl (const int scale)
{
int zufallszahl;
int div;
zufallszahl=rand();
if (zufallszahl > 32768)
{
div = (int) zufallszahl / 32768;
zufallszahl = zufallszahl - (div * 32768);
}
return ((double) zufallszahl / (32768+1.0))*scale;
// return ((double) rand() / (RAND_MAX+1.0))*scale;
}
--
pgp encrypted mails prefered, public key available on my homepage
http://www-flw.maschinenbau.uni-dortmund.de/flw/mitarbeiter/olmi/pgp.html
or send e-mail to pgp-key@saturn.ruhr.de for automatic reply
Key fingerprint = 41 44 89 AF F4 3E 4F 84 5F F4 B7 10 8D 27 5C D7
Re: Zufallsfunktion unter C++?
Author: Ralf W. Stephan
Date: Thu, 04 Apr 1996 13:47
Date: Thu, 04 Apr 1996 13:47
15 lines
1003 bytes
1003 bytes
Kurt Watzka writes: > >Gibt es eine Zufallsfunktion unter C++ > Leider, oder besser gluecklicherweise, nicht. Nicht ganz. Wenn die STL als Standardlibrary übernommen wird, dann könnte es auch das File random.cc dorthin machen. Das Teil existiert zumindest in libg++-2.7.1/libstdc++/stl. ralf -- "In some ways the online environment in 1996 feels like Hong Kong in the last days of British rule: a very free community wondering what's going to happen as the forces of law and order start moving in." --Charles Platt PGP: 1024/0xA713ECE9 2047/0xC8E605F5 keys on servers
Re: Zufallsfunktion unter C++?
Author: Tim Chittka
Date: Fri, 05 Apr 1996 14:59
Date: Fri, 05 Apr 1996 14:59
25 lines
1287 bytes
1287 bytes
Hier mein Riplai auf die Mail
von Freitag dem 02.04.96 von erbsloeh@ind.uni-stuttgart.de
im Brett /DE/COMP/LANG/C++
zum Thema "Zufallsfunktion unter C++?":
Halloele ihr UserInnen,
besonders *erbsloeh*
e> Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl
e> RND?
Abba sicha doch, random zum Bleistift.
Tschüßi
TIMMI@H-HOUSE.domino.de
_-_-_-_-_-_- TIMMI@DOUBLE-M.domino.de
_-_- _- _ _ _ _ -_
_-_- _-_- _-_-_ _-_-_ _-_-_ _-_-_ -_-_
_-_- _-_- _-_- - -_-_ _-_- - -_-_ -_-_
-= 02305-42242 =-
-= Cosysop of HardHouse =-
CITY-NET, TREK-NET, T-NETZ, Z-NETZ, DOMINO, ...
## CrossPoint v3.1 ##
Re: Zufallsfunktion unter C++?
Author: Kurt Watzka
Date: Sat, 06 Apr 1996 10:33
Date: Sat, 06 Apr 1996 10:33
22 lines
1075 bytes
1075 bytes
TIMMI@double-m.domino.de (Tim Chittka) writes: >Hier mein Riplai auf die Mail >von Freitag dem 02.04.96 von erbsloeh@ind.uni-stuttgart.de >im Brett /DE/COMP/LANG/C++ >zum Thema "Zufallsfunktion unter C++?": >Halloele ihr UserInnen, >besonders *erbsloeh* >e> Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl >e> RND? >Abba sicha doch, random zum Bleistift. Das letze mal als ich nachgesehen habe, war "random()" noch nicht im DWP. Auch im ARM steht nichts darueber. Kurt -- | Kurt Watzka Phone : +49-89-2180-6254 | watzka@stat.uni-muenchen.de
Re: Zufallsfunktion unter C++?
Author: Dietmar Kuehl
Date: Tue, 09 Apr 1996 15:15
Date: Tue, 09 Apr 1996 15:15
29 lines
1713 bytes
1713 bytes
Hi, Ralf W. Stephan (ralf@ark.franken.de) wrote: : Kurt Watzka writes: : > >Gibt es eine Zufallsfunktion unter C++ : > Leider, oder besser gluecklicherweise, nicht. Da die Standard C Library Teil der Standard C++ Library ist, gibt es schon eine Zufallsfunktion unter C++: 'rand()'. : Nicht ganz. Wenn die STL als Standardlibrary übernommen wird, STL ist laengst ein wesentlicher Bestandteil der Standard C++ Library. Es gibt kaum eine Chance, dass STL nicht Teil der ISO C++ Standards wird. : dann könnte es auch das File random.cc dorthin machen. Das Teil : existiert zumindest in libg++-2.7.1/libstdc++/stl. Dennoch gibt es keinen 'random_generator' in der C++ Library: Die HP STL Implementation ist NICHT das, was im Standard enthalten sein wird. Es gibt einige wesentlich Unterschiede. Dass DWP enthaelt z.B. keine Referenz auf eine Klasse (oder Funktion) 'random_generator'. Es gibt lediglich ein 'random_shuffle', dass einen Zufallszahlengenerator benutzt. -- dietmar.kuehl@uni-konstanz.de http://www.informatik.uni-konstanz.de/~kuehl/ I am a realistic optimist - that's why I appear to be slightly pessimistic
Re: Zufallsfunktion unter C++?
Author: Tim Chittka
Date: Tue, 09 Apr 1996 17:46
Date: Tue, 09 Apr 1996 17:46
26 lines
1376 bytes
1376 bytes
Hier mein Riplai auf die Mail
von Dienstag dem 03.04.96 von falk@et.tu-dresden.de
im Brett /DE/COMP/LANG/C++
zum Thema "Re: Zufallsfunktion unter C++?":
Halloele ihr UserInnen,
besonders *falk*
f> In der libg++ gibt es eine Klasse fuer die Generierung von Zufallszahlen
f> unterschiedlichster Verteilungen. Ansonsten koennen ja auch noch die
f> Standard- C-funktionen rand und random verwendet werden.
Tja, ich habe auch erst gedacht random() wäre ANSI C. Isses aber nicht.
Tschüßi
TIMMI@H-HOUSE.domino.de
_-_-_-_-_-_- TIMMI@DOUBLE-M.domino.de
_-_- _- _ _ _ _ -_
_-_- _-_- _-_-_ _-_-_ _-_-_ _-_-_ -_-_
_-_- _-_- _-_- - -_-_ _-_- - -_-_ -_-_
-= 02305-42242 =-
-= Cosysop of HardHouse =-
Call us...now !!!
## CrossPoint v3.1 ##
Re: Zufallsfunktion unter C++?
Author: Tim Chittka
Date: Tue, 09 Apr 1996 17:48
Date: Tue, 09 Apr 1996 17:48
32 lines
1571 bytes
1571 bytes
Hier mein Riplai auf die Mail
von Dienstag dem 06.04.96 von watzka@stat.uni-muenchen.de
im Brett /DE/COMP/LANG/C++
zum Thema "Re: Zufallsfunktion unter C++?":
Halloele ihr UserInnen,
besonders *watzka*
w> >e> Gibt es eine Zufallsfunktion unter C++, aehlich wie in BASIC der Befehl
w> >e> RND?
w>
w> >Abba sicha doch, random zum Bleistift.
w>
w> Das letze mal als ich nachgesehen habe, war "random()" noch nicht im
w> DWP. Auch im ARM steht nichts darueber.
Kann sein, ist allerdings auch kein ANSI C Standard.
Dafür aber der Befehl rand() und srand().
Oder unterstützt Dein Compiler etwa kein ANSI ? :-))
Tschüßi
TIMMI@H-HOUSE.domino.de
_-_-_-_-_-_- TIMMI@DOUBLE-M.domino.de
_-_- _- _ _ _ _ -_
_-_- _-_- _-_-_ _-_-_ _-_-_ _-_-_ -_-_
_-_- _-_- _-_- - -_-_ _-_- - -_-_ -_-_
-= 02305-42242 =-
-= Cosysop of HardHouse =-
User/Points are welcome !!!
## CrossPoint v3.1 ##
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads