libri-javascript-python

In questa breve lezione impareremo a generare dei numeri casuali senza ripetizioni in C. Abbiamo già studiato come è possibile caricare un array con numeri random, ovvero con dei numeri a caso tra un intervallo di valori, potete consultare il tutorial al link: array random in C.

Algoritmo per generare i numeri casuali senza ripetizioni in C

Supponiamo di voler inserire in un vettore 10 numeri casuali da 1 a 30 ma senza ripetizioni.

Per generare dei numeri random ricordiamo che serve innanzitutto inizializzare il generatore sull’ora attuale dell’elaboratore time(0): srand(time(0)). Questo infatti garantisce che ogni volta si ottengano valori diversi.

Dopo generiamo dei numeri casuali da 1 a 30 utilizzando la funzione rand()%30+1. Quindi con un ciclo for inizializziamo il vettore con i numeri casuali ma facciamo un controllo che questi numeri non siano già stati inseriti con un ciclo for più interno.

Ecco dunque il listato completo:

#include <stdio.h>
#include <time.h> 
 
#define N 20
 
int main() {
  int a[N];
  int i, j;
  srand(time(0)); //inizializza il generatore sull'ora attuale dell'elaboratore time(0)
  
  for(i=0;i<N;i++) {
    a[i]=rand()%30+1;
    for(j=0;j<i;j++) {
       	if(a[i]==a[j]) {
           i--;
           break;
        }
     }
}
  
  for(i=0;i<N;i++)
   printf("%d\n", a[i]);
   
  return 0;
}

Chiaramente questo è solo un esempio di come risolvere l’algoritmo per generare numeri casuali senza ripetizioni in C.

La soluzione migliore in questo caso è utilizzare un ciclo while, provate a trovare una soluzione e scriverla nei commenti.

Alcuni link utili

Indice argomenti linguaggio C

La funzione fopen

La funzione fclose

Funzione fprintf

Funzione fscanf

Allocazione dinamica della memoria con malloc

Utilizzo di malloc in C

Strutture in C

Typedef struct in C

Esempio sulle struct in C

Esercizio sulle struct in C

Esercitazione sulle struct in C

Realizzare un menù di scelta in C

Strutture complesse in C

Somma elementi diagonale principale di una matrice

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C