Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C] Random tra -128 e 127

    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;

    ?????

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,138
    Credo che questo sia sufficiente:
    codice:
    #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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Astuto!

    grazie mille.

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

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,138
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,788
    linguaggio nel titolo: leggi il regolamento
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  6. #6
    va meglio così?

    desculpa.

  7. #7
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.