PDA

Visualizza la versione completa : [C] Random tra -128 e 127


syddharta
01-02-2005, 12:50
Ciao a tutti,

avrei bisogno di generare un numero casuale tra -128 e 127.
solo che, da quel che ho capito rand parte da 0, e se io faccio:
A = -128 rand() % 127 mi trasla di -128 il valore estratto tra 0 e 127.....

esiste qualcosa?

oppure devo agire per vie traverse, tipo:

A1= rand() % 127;
A2= rand() % 128;

A=A1-A2;

?????

LeleFT
01-02-2005, 12:59
Credo che questo sia sufficiente:


#include <stdio.h>

int main() {
char c;
int i;

srand(time(NULL));

i = rand() % 256;
c = (char) i;

printf("Valore: %d", c);

return 0;
}
Se il valore è maggiore di 127, la conversione a char (il cast) lo considera, automaticamente, come un valore in complemento a 2.

Alla prima esecuzione ho ottenuto -91! :)

Ciao. :ciauz:

syddharta
01-02-2005, 13:04
Astuto!

grazie mille.

quindi mi confermi che nn si può usare rand per scegliere dei numeri in un intervallo da negativi a positivi...

LeleFT
01-02-2005, 13:06
La funzione rand() restituisce un valore positivo compreso fra 0 ed un certo valore specificato in MAX_RAND (se non ricordo male). Quindi non si può forzare tale funzione a restituire un valore negativo, ma lo si può sempre manipolare per ottenerlo! :)


Ciao. :ciauz:

MMarzia
01-02-2005, 13:29
linguaggio nel titolo: leggi il regolamento (http://forum.html.it/forum/showthread.php?threadid=762409)

syddharta
01-02-2005, 13:34
va meglio così?

desculpa.

kentaromiura
01-02-2005, 14:52
Originariamente inviato da syddharta
Astuto!

grazie mille.

quindi mi confermi che nn si può usare rand per scegliere dei numeri in un intervallo da negativi a positivi...
il trucco c'e':
se vuoi un numero da -n a m-1 basta fare
(rand()%(n+m))-n

Loading