Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178

    [C] Generare numeri casuali reali in una matrice

    Ciao a tutti.

    Devo generare una matrice di numeri casuali che vanno da 0 a 1. Il numero delle righe e colonne è immesso dall'utente e non deve superare il numero 10.

    ESEMPIO:

    Inserisci righe e colonne

    3
    3

    la matrice:

    0.2 0.5 0.2
    0.6 0.5 0.6
    0.4 0.7 0.2

    Ho messo solo una cifra dopo la virgola per motivi di semplicità.

    Non so come si fanno a generare questi numeri. Grazie mille.

    Questo è il programma che ho fatto. Non capisco perché mi escono tutti 0

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


    #define MAX 10


    void genera(float mat[MAX][MAX], int rig, int col);


    int main(void) {


    float ma[MAX][MAX];


    int ri, co;


    printf("Inserisci numero di righe e colonne\n");
    scanf("%d %d", &ri, &co);


    genera(ma, ri, co);


    return 0;


    }


    void genera(float mat[MAX][MAX], int rig, int col) {


    int i, j;


    srand( time (NULL));


    for(i = 0; i < rig; i++) {
    for(j = 0; j < col; j++) {
    mat[i][j] = (float) (rand() % 2);
    }
    }


    for(i = 0; i < rig; i++) {
    for(j = 0; j < col; j++) {
    printf("%d ", mat[i][j]);
    }
    printf("\n");
    }
    }
    Ultima modifica di Bombonera; 24-07-2014 a 11:29

  2. #2
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    non vedo però comi si generano i numeri con la virgola

  4. #4
    Non c'è nulla di già pronto, ma lo puoi ricavare facilmente, dato che sai qual è il range dei numeri generati da rand()...
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Non c'è nulla di già pronto, ma lo puoi ricavare facilmente, dato che sai qual è il range dei numeri generati da rand()...
    se faccio

    rand() % 6

    il range è tra 0 e 5

    ora se dichiaro una matrice di tipo float

    e faccio

    rand() % 6

    mi dovrebbe dare anche i numeri con la virgola ?

  6. #6
    No, perché dovrebbe farlo? rand() restituisce interi compresi tra 0 e RAND_MAX, i numeri decimali non li fai certo spuntare usando l'operatore modulo. Ragiona un momento: come puoi fare per ottenere numeri decimali tra 0 e 1 dall'output di rand()?
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    hai ragione che stupido, quello è l'operatore modulo che funzione infatti solo con interi.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    non lo so proprio

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    penso centra qualcosa l'operatore della divisione

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Ho fatto

    rand() \ RAND_MAX

    e mi escono numeri con la virgola

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