2016-07-07 7 views
0

Ich muss eine zufällige Anzahl von Zahlen zwischen 10 bis 15 generieren. Auch muss ich diese Zufallszahlen zwischen 20 bis 50 machen. Ich habe den zweiten Teil getan, denke ich, ich weiß einfach nicht, was ich in meine setzen soll if-Anweisungsbedingung Weiß jemand? Hier ist mein Code so weit:Wie können Sie eine zufällige Anzahl von Zahlen zwischen einem bestimmten Betrag generieren?

#include <iostream> 
#include <time.h> 
#include <stdlib.h> 
using namespace std; 
int main() 
{ 
srand((unsigned)time(0)); 
int random_integer; // Stores random number between 20 and 50 
int random_set; // Stores random amount of numbers 
for(){ // 
    random_integer = 20 + rand()%25; // Random number between 20 and 50 

    cout <<"Generating " << random_set << "random numbers" << random_set " (is a random number between 10 to 15)."; 
    cout << random_integer <<", "; 
    } 

    return 0; 
} 
+0

Ist das Ihre Antwort - >>> 'output = min + (rand()% (int) (max - min + 1))' dann ist es ein Duplikat http://stackoverflow.com/questions/5008804/ generating-random-integer-from-a-range –

Antwort

0

Zunächst einmal erzeugt diese Zahlen von 20 bis 45 (exklusiv):

random_integer = 20 + rand() % 25; 

es zu beheben, verwenden rand() % 30.

Ich brauche eine zufällige Menge von Zahlen zwischen 10 bis 15

erzeugen dann eine Zufallszahl zwischen 10 und 15 und iterieren erzeugen (mit einer Schleife) von 0 auf diese Zahl:

int n = 10 + rand() % 5; 
int *numbers = new int[n]; //array that stores the random numbers 
for (int i = 0; i < n; i++) 
    numbers[i] = 20 + rand() % 30; //random number between 20 and 50 
+0

Wir haben Arrays noch nicht gelernt. –

+0

Nun, verwenden Sie kein Array, nur "Int-Nummer = 20 + Rand()% 30;" innerhalb der Schleife und drucken Sie es aus. –

0

Der Schlüssel ist Ihre Modulo-Nummer und Ihre Startnummer.

// rand() % 5 + 10 has a range of 10 to 10+5 (15) 
// rand() % 30 + 20 has a range of 20 to 20+30 (50) 
int numberCount = rand() % 5 + 10; 
for(int i = 0; i < numberCount; ++i) 
{ 
    int randomNumber = rand() % 30 + 20; 
    cout << randomNumber << endl; 
} 

Wenn Sie inklusive möchten, verwenden Sie 6 und 31 statt 5 und 30

+0

Ich bekomme ein paar komische Zahlen. Hier ist, was ich versuche zu tun: Erzeugen von 11 Zufallszahlen (11 ist eine Zufallszahl zwischen 10 bis 15) ... ... 11 Zufallszahlen zwischen 20 bis 50: 26, 23, 48, 32, 44, 21, 32, 20, 49, 48, 34 –

+0

Was sind die seltsamen Zahlen, die Sie bekommen? – rhowen4

1

Während die anderen Antworten wurden abgedeckt, wie dies rand() mit zu tun, desto besser (und richtige) Weg Zufallszahlen zu erzeugen in C++ (vorausgesetzt, Sie haben einen C++ 11 oder höher Compiler, den Sie haben sollten) ist über die <random> Header.

Hier ist, wie zufällig int s in einem bestimmten Bereich zu generieren:

#include <random> 
#include <iostream> 

int main(void) { 
    std::random_device rd; // seed for PRNG 
    std::mt19937 mt_eng(rd()); // mersenne-twister engine initialised with seed 
    const int range_min = 10; // min of random interval 
    const int range_max = 15; // max of random interval 
    // uniform distribution for generating random integers in given range 
    std::uniform_int_distribution<> dist(range_min, range_max); 

    const int n = 10; // number of random int's to generate 
    // call dist(mt_eng) to generate a random int 
    for (int i = 0; i < n; ++i) 
     std::cout << dist(mt_eng) << ' '; 
} 

Und natürlich können Sie auch den Wert von n trivialer über einen ähnlichen Code zu dem oben randomise.

Verwandte Themen