Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
26.11.2001, 20:37
Sandra



HI, ich habe ne kurze c++ frage:
ich habe eine interger variable names "value_seq". Das soll nun entweder den Wert 13 oder 14 oder 17 haben.
Außerdem soll sich der werte alle fünf sekunden ändern

Beispiel
value_seq = 13
(5 seks später)
value_seq = 14

...
Ist leicht, aber ich komm nicht drauf (c++ erst seit 2 tagen :))

--

zum Seitenanfang zum Seitenende Profil || Suche
001
26.11.2001, 21:41
gerk



di meinst zufallszahlen? würd mich auch interesieren.
ich glaub da wars was mit srand().
oder irre ich mich da?

--

„Und da wir uns ja seit heute etwas näher gekommen sind, kann ich nur sagen: Mir hilft da immer Norther volle Lautstärke (so wie jetzt), sodass die ganzen unrasierten, Wasserpfeife rauchenden, alternativen Wichsstudenten aus ihren, aus Bananenschalen und Abfall gebastelten, Sitzkissen fliegen.“

zum Seitenanfang zum Seitenende Profil || Suche
002
26.11.2001, 22:06
Diablo_bth



ich *glaube* das macht man so:

Quellcode:
#include <cstdlib> // oder wo das dandom-zeugs drin is..

int_variable = rand() % ganzzahl_maximum;

dann kriegst du nen Wert zwischen 0 und ganzzahl_maximum!

--

zum Seitenanfang zum Seitenende Profil || Suche
003
26.11.2001, 22:08
Archangel



zufallszahl:

rand()%(max - min + 1) + min

und das mit den 5 seks:
naja, wenn du in der zeit nichts anderes zu tun hastm könntest du das so machen:

time_t currtime = time(NULL);
while(time(NULL) < currtime + 5);

vorher time.h bzw sys/time.h includen

ach ja für rand() brauchst du die stdlib.h

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005


Dieser Beitrag wurde am 26.11.2001 um 22:09 von Archangel bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
26.11.2001, 22:45
Sandra



nein,nein,nein keine zufallszahl, sonderen nur zufällig 13 oder 14 oder 17:

in basic würde dass so aussehen:

i = rnd (2)

if i = 0 then x = 13
if i = 1 then x = 14
if i = 2 then x = 17

--

zum Seitenanfang zum Seitenende Profil || Suche
005
26.11.2001, 23:04
Tron



const int zahlen[] = {13, 14, 17};

.
.
.

{
x = zahlen[rand() % 3];
}

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett


Dieser Beitrag wurde am 26.11.2001 um 23:04 von Tron bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
27.11.2001, 01:10
Kriz



Hrhr, was hast du denn noch nachträglich editiert?

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
007
27.11.2001, 06:49
Tron



Kriz du naseweis, ich hab' ausversehen bei rand das 'd' vergessen, ich lege halt auch auf details wert
komm ich jetzt vor coder-gericht und werde standrechtlich geloescht, weil ich wegen einem buchstaben editiert habe? *g*

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
008
27.11.2001, 07:59
gerk



looooooooool
achja afaik kriegt man mit rand nach jedem programmneustart immer dieselbe abfolge von zufallszahlen.
das muss man doch mit der time.h und mit srand() machen, oder

--

„Und da wir uns ja seit heute etwas näher gekommen sind, kann ich nur sagen: Mir hilft da immer Norther volle Lautstärke (so wie jetzt), sodass die ganzen unrasierten, Wasserpfeife rauchenden, alternativen Wichsstudenten aus ihren, aus Bananenschalen und Abfall gebastelten, Sitzkissen fliegen.“

zum Seitenanfang zum Seitenende Profil || Suche
009
27.11.2001, 10:55
Archangel



jep...

Zitat:

(by Prefect)
rand() ist kein Zufallszahlengenerator sondern ein Pseudo-Zufallszahlengenerator (PRNG). Ein PRNG arbeitet zumeist nach einem einfachen Prinzip. Dabei wird ein "Carry" im Hauptspeicher behalten, und bei jedem Aufruf von rand() wird eine Operation (Carry * A) + B ausgeführt. Das Ergebnis wird dann zurückgegeben, und die höherwertigen Bits, die im Ergebnis keinen Platz haben werden zum neuen Carry. Es gibt auch komplexere Algorithmen, aber die meisten arbeiten so oder so ähnlich.

Beim Programmstart ist dieses Carry auf 0 initialisiert. Da es sich aber bei rand() um eine exakte mathematische Operation handelt heißt das, daß bei jedem Programmablauf genau die gleiche Reihenfolge an Zufallszahlen erzeugt werden würde. Deswegen gibt es die Funktion srand(), mit der man das Carry setzen kann. Du kannst das Carry entweder auf eine Konstante setzen; damit kannst du dann vorhersagbare Programmabläufe auch mit Zufallszahlen erzwingen. Oder aber du setzt das Carry auf eine Zahl, die möglichst bei jedem Programmstart anders ist, und dafür eignet sich eben die Systemzeit, die von time() zurückgegeben wird.

mit srand() setz man wie gesagt dieses carry, indem man es als parameter übergibt, also in dem falle:
srand(time(NULL));

vorher natürlich die time.h bzw sys/time.h includen

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche
010
28.11.2001, 15:05
Another1



und das zeit dingens machst du so

Quellcode:
#include <time.h>
typedef float atime;

inline atime GetTime() // in seconds
{
   return (atime)((float)clock()/(float)CLOCKS_PER_SEC);
}

int main(...)
{
  atime tNextRand = GetTime()+5.0f;
  bool abort = false;
  int rndNr;
  while(!abort)
  {
     if(tNextRand <= GetTime()) // time of event is reached
     {
       rndNr = rand(blablabla);
        tNextRand = GetTime() + 5.0f; // wieder 5 sekunden später weitermachen
     }

  }
}


sozusagen ne schleife die die ganze zeit läuft und bei jedem durchlauf testet, ob wieder 5 sekunden vorbei sind

--

Another1

...relaxing..atm =)
... und Schweiz suckt!


Dieser Beitrag wurde am 28.11.2001 um 15:05 von Another1 bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche