Newsgroup: it.comp.lang.c
Titolo: andrea laforgia:un grande

come si fa ad ottenere ad esempio 30 numeri con la funzione random() senza
ripetizioni?
Ciao

ripetizioni?
mi spieghi il subject?
----
Lawrence "Rhymes" Oluyede
rhy...@myself.com

ripetizioni?
Uhmm, chiamandola 30 volte di fila e magari con il nome giusto?
Nota: e' meglio se prima inizializzi il seed con srand(time(NULL))
Mox :)

 wrote in message
sU42PKXCUS5WWWY18cgSyrx5+H=d...@4ax.com...


 random() senza ripetizioni?
Dipende da quali numeri vuoi ottenere. Per esempio: interi da 1 a 100?
Maurizio.

ripetizioni?
se vuoi costruire delle serie pseudo-casuali (in cui sono ammesse
ripetizioni di valori)
leggi il libro di C e lo capisci subito, comunque se vuoi del codice
#include <stdio.h>
#include <stdlib.h>
int main()
{long int q;
 int r;
 do{printf("\nInserisci un intero tra 0 e 10000; -1 termina \n");
      while(scanf("%d", &q)!=1)/* prende un intero */ 
              {printf("\nErrore> ");
               while(getchar()!='\n');
              }
      srand( q );/* void srand(r) inizianlizza rand(), e a secondo del
                    valore r iniziale si ha la successione di valori 
                     restituiti da int rand(void); stesso r
                      valore iniziale dovrebbe significare stessa 
                      successione  per rand(void) */
      for(r=1;r<100;r++) 
               printf("%d%c", rand(), (r%9==0)?'\n':' ');
     }while(q != -1);
 return 0;
}
se non vuoi ripetizioni nella serie di numeri lascio la parola ad
altri più esperti oppure se vuoi 30 numeri casuali da 0 a 29 senza
ripetizione potresti provare con
#include <stdio.h>
#include <stdlib.h>
int main()
{char a[30], temp;
  int j, i;
 printf("\nInserisci un intero tra 0 e 10000\n");
      while(scanf("%d", &j)!=1)/* prende un intero */ 
              {printf("\nErrore> ");
               while(getchar()!='\n');
              }
srand(j);
for(i=0;i<30;++i) a[i]=(char) i;/*inizializza*/
for(i=0;i<30;++i)/*costruisce la permutazione*/ 
         {j=rand()%30;
          temp=a[j];
          a[j]=a[i];
          a[i]=temp;
         }
for(i=0;i<30;i++)
  printf("%d%c", a[i], ((i+1)%9==0)?'\n':' ');
printf("\n");
return 0;
}
cioè provare con 
una permutazione di 30 elementi ovvero rimescolare un mazzo con 30
carte; cmq non ti garantisco
 

ROTFL!!!!!!!!!!!!
ma almeno lui č in giro o no?



Slick, slack, slurp, lecc, lecc, ...
Bob Rock

prova così
se vuoi 30 numeri casuali
crea un array di 31 celle e numerale tutte progressivamente, chiami la
funzione random in modo che lanci numeri casuali da 0 a 29 e che poi sposti
la relativa cella in fondo all'array, così facendo alla seconda chiamata a
random farai scegliere un numero casuale da 0 a 29-1 così eviterai di
scegliere i soliti numeri; poi ripeti il tutto dall'inizio e così via
se invece devi fare lanciare 30 numeri casuali non da 1 a 30 beh la
soluzione ci sarebbe ma non ho voglia di spiegarla visto l'ora ma se mi
chiami direttamente in e-mail domani mi ci metto e te la compilo per bene.
reply to: 
MADli...@hotmail.com



Newsgroups: it.comp.lang.c
Sent: Friday, January 04, 2002 10:17 PM
Subject: andrea laforgia:un grande


On Sat, 05 Jan 2002 16:21:07 GMT, pi...@pierin.pierino (pierino) wrote:
[cut]
anche se ignoro come un ng (o la societą in generale) possa sussistere
senza generositą.
Ciao

 scegliere i soliti numeri; poi ripeti il tutto dall'inizio e cosě via


leccare?
Molte persone sono brave qui dentro e comunque nn potresti mettere un
subject cosi :)
Lawrence "Rhymes" Oluyede
rhy...@myself.com
"Per cambiare, per diventare un'altra
cosa dobbiamo prima sapere cosa siamo"
(Bruce Lee)