🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #2010

Re: Zufallsfunktion unter C++?

#2010
From: Oliver Michels
Date: Thu, 04 Apr 1996 04:48
70 lines
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 
Technical Details
Message-ID: <DpBMoK.8z@saturn.ruhr.de>
Path: arc1-ca.pugleaf.net!ruhr.de!saturn!oliver
References: <4jrj46$5580@info4.rus.uni-stuttgart.de>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++
Path: arc1-ca.pugleaf.net!ruhr.de!saturn!oliver
From: oliver@saturn.ruhr.de (Oliver Michels)
Subject: Re: Zufallsfunktion unter C++?
X-Newsreader: TIN [version 1.2 PL2]
Organization: private site
Message-ID: <DpBMoK.8z@saturn.ruhr.de>
References: <4jrj46$5580@info4.rus.uni-stuttgart.de>
Date: Thu, 4 Apr 1996 04:48:19 GMT