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

    [C] generazione numeri casuali in un array quadrato

    salve,
    scusate ma vorrei essere rassicurata su quello che sto facendo e sopratutto di aver preso la strada giusta.
    ho cercato di generare dei nuemri casuali di un intrevallo [-100,100]in un array quadrato 8X8,va bene cosi?non so perchè ma i valori mi sembrano sempre un pò troppo statici,cambiano lentamente e sono spesso simili a quelli di prima,grazie


    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #define n 8
    int main ()
    {
    int i=0,j=0;
    float x_casuale;
    float a[n][n];



    srand(time(NULL));
    for (i=0;i<n;i++)
    {
    for (j=0;j<n;j++)
    {
    x_casuale=-100+(100+100)*(float)rand()/(float)RAND_MAX;
    a[i][j]=x_casuale;
    }
    }

    for (i=0;i<n;i++)
    {
    for (j=0;j<n;j++)

    printf(" %.2f",a[i][j]);

    printf("\n");
    }}

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    25
    Prova così:
    srand((unsigned) time(NULL));
    ....
    int y;
    float x_casuale;
    ...
    x_casuale = rand()/( float)RAND_MAX;
    y = (float)(rand()%199);
    if (y >= 100) y= (y - 100)*-1;
    x_casuale = x_casuale + y;

  3. #3
    codice:
    (rand()*200)-100
    così ottieni numeri in virgola mobile nell'intervallo [-100,100).
    non c'è modo di ottenere il numero 100 preciso se lavori con numeri in virgola mobile perchè la rand() ti restituisce un numero casuale nell'intervallo [0,1)
    se tu avessi voluto numeri interi allora potevi avere un intervallo chiuso anche a destra facendo un cast a int
    Open your mind. Use Open Source.

  4. #4
    scusa ho sbagliato io,volevo generare int casuali...

  5. #5
    come faccio per impostare l'intervallo da -100 a 100? non riesco a trovarlo sul libro

  6. #6
    (int)(rand () % 201) - 100
    Per ottenere valori da -100 a 100 (estremi inclusi)
    (int)(rand() % 199) - 99
    Per ottenere valori da -100 a 100 (estremi esclusi)
    Experience is what you get when you don’t get what you want

  7. #7
    grazie mille,ma oltre ad avere la soluzione potreste spiegarmi la sua funzione
    (int)(rand () % 201) - 100

  8. #8
    (int) è il casting a intero
    % è l'operatore modulo, restituisce il resto della divisione
    (x % 201 è uguale ad un valore inferiore a 201 ossia da 0 a 200)
    - 100 per spostare l'intervallo

    Es. se rand () restituisce 50.555

    (int) (50.555) - 100 = 50 - 100 = -50
    Experience is what you get when you don’t get what you want

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 © 2024 vBulletin Solutions, Inc. All rights reserved.