Domanda Risolto funzione random in c

Stato
Discussione chiusa ad ulteriori risposte.

sara20

Utente Silver
6 Febbraio 2020
116
29
1
54
buongiorno ho una matrice contenente città devo generare una città casuale da questa matrice in c come posso implementarla sapete farmi un esempio con stringhe?
 
Non forniamo soluzioni pronte, pubblica almeno parte del codice.

Per prelevare un elemento random ti è sufficiente generare l'indice della riga e della colonna, e poi accedere a quell'elemento.
 
  • Mi piace
Reazioni: Ducknaro
Ultima modifica:
Non forniamo soluzioni pronte, pubblica almeno parte del codice.

Per prelevare un elemento random ti è sufficiente generare l'indice della riga e della colonna, e poi accedere a quell'elemento.
io ho fatto cosi ma non funziona

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

void genera(char array[], int j); //j è il contatore del ciclo che chiama genera()
int main() {
    char** nomiCitta = (char**) calloc(9, sizeof(char*));
     for(int i=0; i<9; i++) nomiCitta[i] = (char*) calloc(256, sizeof(char));
     strcpy(nomiCitta[0], "Napoli");
     strcpy(nomiCitta[1], "Roma");
     strcpy(nomiCitta[2], "Milano");
     strcpy(nomiCitta[3], "Torino");
     strcpy(nomiCitta[4], "Salerno");
     strcpy(nomiCitta[5], "Praga");
     strcpy(nomiCitta[6], "Albuquerque");
     strcpy(nomiCitta[7], "Londra");
     strcpy(nomiCitta[8], "San Pietroburgo");
   
     printf("%s\n", nomiCitta[rand()%9]);
   
        return 0;
}
Pero mi da sempre la stessa
 
C:
     printf("%s\n", nomiCitta[rand()%9]);
Pero mi da sempre la stessa
Perche' la libreria rand serve per generare numeri pseudo-casuali, basati sul seed: questo in soldoni significa stesso seed = stesso numero. Per impostare il seed devi usare la funzione srand; che e' la ragione per la quale suppongo tu abbia incluso la libreria time . Aggiungendo prima dell'ultimo printf la stringa srand(time(NULL)); risolverai il problema.

Ho dato una spiegazione estremamente grossolata e volutamente imprecisa, ti consiglio di documentarti maggiormente qui:
C Rand Lib
C Time Lib
 
  • Mi piace
Reazioni: sara20
Ultima modifica:
Perche' la libreria rand serve per generare numeri pseudo-casuali, basati sul seed: questo in soldoni significa stesso seed = stesso numero. Per impostare il seed devi usare la funzione srand; che e' la ragione per la quale suppongo tu abbia incluso la libreria time . Aggiungendo prima dell'ultimo printf la stringa srand(time(NULL)) risolverai il problema.
Grazie risolto :)
 
Stato
Discussione chiusa ad ulteriori risposte.