# Zufallszahl erzeugen



## einguter (7. Juni 2005)

Wie erzeugt man im C++ Builder eine Zufallszahl, welche zwischen 0 und 1000 liegt.

Dazu benötige ich eine genaue Anleitung. Vor allem, was für ein Projekt unter Datei --> Neu muss ich auswählen, damit am Ende eine .exe Datei entsteht ?

Viele Fragen !

Danke schon mal im Voraus


----------



## FireFlow (7. Juni 2005)

Konsolenexperte (ich glaube mit deinem Wissensstands lässt du besser die Finger von GUIs)

Funktion: rand() (in der Hilfe findest du Beispiel oder in der Suchfunktion)


----------



## einguter (7. Juni 2005)

folgenden Quelltext habe ich jetzt:
----------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

 /* Druckt eine Zufallszahl zwischen o und 99 aus */
int main(void)
 {
    randomize();
    printf("Random number in the 0-99 range: %d\n", random (100));
    return 0;
}
------------------------------------------
Nach Ausführen der Datei schließt sich das DOS Fenster sofort wieder, ohne das ein Wert angezeigt wird.


----------



## Flegmon (7. Juni 2005)

einguter hat gesagt.:
			
		

> Nach Ausführen der Datei schließt sich das DOS Fenster sofort wieder, ohne das ein Wert angezeigt wird.



Weil das Programm sofort wieder beendet ist. Setze noch vor return system("pause")


----------



## Tobias K. (7. Juni 2005)

moin


Ich würde es so machen:

```
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

/* Druckt eine Zufallszahl zwischen o und 99 aus */
int main(void)
{
    srand(time(NULL));
    printf("Random number in the 0-99 range: %d\n", rand() % 100);
    
    return 0;
}
```


mfg
umbrasaxum


----------



## einguter (7. Juni 2005)

Und wie sieht der genaue Befehl Pause im C++ aus ?


----------



## Tobias K. (7. Juni 2005)

moin


Hat er doch oben geschrieben "system("PAUSE");"
Du könntest auch getch(); benutzen.
Außerdem programmierst du, deinem Code oben nach, kein C++ sonder C.


mfg
umbrasaxum


----------



## einguter (7. Juni 2005)

das Ganze funktioniert jetzt ! 
Aber es werden manchmal Zahlen doppelt ausgegeben. Lässt sich das noch unterbinden?


----------



## Tobias K. (7. Juni 2005)

moin


Ja, in dem du eine Liste mit den Zufallszahlen machst, dann über prüfst ob die Zahl schon vorkam, und wenn nciht sie dann ausgibst.


mfg
umbrasaxum


----------



## einguter (7. Juni 2005)

leider kenne ich mich in C nicht so gut aus, um dies umzusetzen. Hast Du auf die schnelle einen Quelltext?


----------



## Tasm-Devil (9. Juni 2005)

randomize();

 int ZahlenBereich = 1000;
 int Zahl = rand()%ZahlenBereich+1;


 gibt dir eine Zahl zwischen 1 und 1000 (nicht getestet)


----------



## FireFlow (9. Juni 2005)

```
#include <stdio>
#include <stdlib>

bool is_in_range(int* p, int const& value, int const& range)
{
    for(int i=0; i<range; ++i)
    {
        if(p[i]==value) return 1;
    }
    return 0;
}

int main()
{
   int zahlen[100];

   for(int i=0; i<100; ++i)
   {
       do
       {
           zahlen[i] = rand() % 100;
       } while(is_in_range(zahlen, zahlen[i], i-1));
       printf("%d, ", zahlen[i]);
   }

   system("pause");
}
```


----------

