rand()

Stato
Discussione chiusa ad ulteriori risposte.

edo1493

Utente Silver
13 Settembre 2008
79
16
1
79
Scrivete delle istruzioni che assegnino alla variabile n degli interi casuali compresi nei seguenti intervalli: 1<=n<=2 1<=n<=100 0<=n<=9 1000<= n <= 1112

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

int main ()
{

int n;

srand( time (NULL) ) ;

n = 1 +( rand() % 2 );

printf(" %d\n ", n );

n = 1 + ( rand() % 1000);

printf(" %d\n ",n);

n = 1 + ( rand() % 9 );

printf(" %d\n ",n);

n = 1000 + ( rand() % 1112);

printf(" %d\n ",n);

return 0 ;

}
Il mio va solo che l'ultimo rand sballa e mi va n=>1112 non ha senso...:-/
 
Vabbe, esercizio quasi inutile...
[Python]
Codice:
#!/usr/bin/python
from random import randint
print "n="+str(randint(1,2))
print "n="+str(randint(1,100))
print "n="+str(randint(0,9))
print "n="+str(randint(1000,1200))
 
Beh a parte che come si suol dire "la matematica non è un opionione":
2+1000=1002 > 2
Stai commenttendo diversi errori logici.
perchè rand()%N ti da un numero compreso tra 0 e N-1, quindi, visto che negli altri fai solo +1 ottieni (forse inconsapevolmente) il risultato che ti aspetti.

ps
poi hai messo il +1 anche dove non ci voleva....insomma è quasi tutto sbagliato il tuo source :p
 
guarda tieni è anche modulare fallo con i margini che ti pare... non è umano fermarsi su queste cose...
Codice:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>


int randomize(int l, int h);

int main ()
{
	int n;
	srand( time (NULL) ) ;

	n = randomize(1,2);
	printf("%d\n", n );

	n = randomize(1,1000);
	printf("%d\n",n);

	n =  randomize(0,9);
	printf("%d\n",n);

	n = randomize(1000,1112);
	printf("%d\n",n);
	return 0 ;

}

int randomize(int l, int h)
{
	return( l + rand()%( h-l+1 ) );// +1 corretto dopo intervento  KAMA
}
ma poi perchè hai postato qui?
io boh... vabb è come sparare alla croce rossa... lasciamo perdere ormai si sa come sei...
 
edo1493 ha detto:
io volevo fare random tra 1 e 1000 quindi ho dato 1 + rand() % 1000 è sbagliato?
non hai capito nulla....quello è giusto è
1000+rand()%1112
che è sbagliato

edit
@jacoboss:
credo che
return( l + rand()%(h-l) );
dovrebbe essere
return( l + rand()%(h-l+1) );
 
Stato
Discussione chiusa ad ulteriori risposte.