Salve a tutti, ho un interrogativo per me abbastanza ostico da proporvi.
Sto implementando un gioco in C++ e ho necessità di generare un numero casuale.
Il gioco ha 3 difficoltà che dipendono dal fatto che il numero in questione sia composto di 3, 4 o 5 cifre.
Ora il problema non è in se per se generare numeri casuali, questo so come farlo tramite le funzioni rand() e srand() presenti nella libreria <stdlib.h> e utilizzando l'orologio di sistema affinché il numero sia sempre diverso.
Il punto è un altro, il numero generato dovrebbe avere dei criteri che non so come impostare, vi dico quali dovrebbero essere così potete darmi qualche consiglio:
- Per le cifre vanno bene tutte (da 0-9)
- Il numero non deve contenere ripetizioni (es. 1234 SI - 12 32 NO)
- Il numero deve poter avere anche lo 0 davanti (es. 0123)
Ovviamente i criteri devono rimanere validi sia che il numero sia di 3, di 4 o di 5 cifre in base alla difficoltà.
Non so se rand() da in automatico la possibilità di trovarsi lo 0 davanti, o produce solo numeri che esistano davvero, avevo pensato di ovviare al problema dello 0 davanti riducendo il range di cifre da 1-9, però rimane il problema delle ripetizioni che ancora non so come risolvere.
Se avete consigli a me farebbe piacere poter tenere anche lo 0.
L'idea più stupida che mi viene è quella di impostare un ciclo che generi e rigeneri il numero finché non trova uno con i criteri indicati, però magari c'è qualcosa di più semplice.
Vi ringrazio anticipatamente per il vostro aiuto, spero di aver spiegato bene il tutto.