Domanda Estrarre numero casuale da un insieme di numeri in C

Stefano011

Utente Bronze
10 Dicembre 2020
54
15
2
30
Ultima modifica da un moderatore:
Ciao,l'esercizio consiste nell'estrarre un numero casuale da un gruppo definito di numeri,non necessariamente consecutivi.Il mio ragionamento era di creare un array con i valori del gruppo di numeri da cui estrarre,e poi estrarre un numero che andava da 0 alla lunghezza del vettore.,così da estrarre uno di quei numeri.
Esempio:

C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    srand(time(NULL));
    int i; /*Indice*/
    int array={1,3,-1,100};
    i=0+(rand()%4);
    printf("%d",array[i]);
}

Però ho un piccolo problema,il libro che sto seguendo fino ad ora non aveva mai parlato di vettori,io sono arrivato a questa soluzione perchè li conoscevo di mio(lasciate stare il perchè).Senza l'uso di vettori come avrei potuto risolvere?(Mi basta che mi diate uno spunto/un indizio :) )
P.S Nel codice ho sbagliato volevo scrivere
int array[ ]={.....};
 
Ciao,l'esercizio consiste nell'estrarre un numero casuale da un gruppo definito di numeri,non necessariamente consecutivi.Il mio ragionamento era di creare un array con i valori del gruppo di numeri da cui estrarre,e poi estrarre un numero che andava da 0 alla lunghezza del vettore.,così da estrarre uno di quei numeri.
Esempio:

C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    srand(time(NULL));
    int i; /*Indice*/
    int array={1,3,-1,100};
    i=0+(rand()%4);
    printf("%d",array[i]);
}

Però ho un piccolo problema,il libro che sto seguendo fino ad ora non aveva mai parlato di vettori,io sono arrivato a questa soluzione perchè li conoscevo di mio(lasciate stare il perchè).Senza l'uso di vettori come avrei potuto risolvere?(Mi basta che mi diate uno spunto/un indizio :) )
P.S Nel codice ho sbagliato volevo scrivere
int array[ ]={.....};
Questo insieme di numeri da cui vuoi estrarre i numeri come è composto? È un range di numeri consecutivi (es. da 1 a 90 come la tombola, 4 a 9, da -2 a 50 e via scorrendo) o è un insieme di numeri non consecutivi come quello usato da te nell'esempio?
 
Devi printare dei numeri totalmente casuali?
Questo puo andar bene(?):
C:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(int argv, int *argc[]) {
    srand(time(NULL));
    int i=0;
    int array[4];
    int l=sizeof(array)/sizeof(array[0]);
    for (int x=0; x<l; x++) {
        srand(time(NULL));
        array[x]=rand()%4;
        printf("%d\n",array[x]);
    }
    return 0;
}