Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    51

    [C++] Generazione numeri casuali con libreria GSL

    Ciao a tutti,

    vorrei creare una serie di numeri casuali utilizzando già la libreria a disposizione...

    Nel ciclo for ho inserito una cosa del genere che non avrà ne capo ne coda...qualcuno però mi sa dare delle dritte??

    NumeriCasuali[i]=gsl_rand_chisq(rg, v);

    Suggerimenti?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    51
    Ok...sono arrivato a creare dei numeri casuali così:

    for (i=0;i<=n;i=i+1){
    NumeriCasuali = gsl_ran_chisq ( rg, nu);
    fprintf(fu,"%d\n",NumeriCasuali);
    }


    però vi presento anche l'output:

    -1505515112
    -1621903220
    -232300434
    521175725
    1931693538
    -1399639393
    1514800862
    -132442230
    -221083312
    -1292875680
    1247586621
    -209675417
    789818363
    -1807154580
    -384000458
    -1512623883
    -802868934
    -1276870287
    -1000848969
    1419982591
    ...ecc...ecc

    Mi aspettavo numeri più piccoli...mi sbaglio????

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    usa il modulo e li ottieni piccoli quanto vuoi chiaramente sopra l'unità

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    51
    Sono quasi arrivato alla soluzione...

    utilizzando la funzione:

    unsigned int k = gsl_ran_chisq (r, mu);

    come faccio a creare numeri che vadano da un certo numero ad un altro???

    Ho creato un programma che mi crea numeri da 1 ma il maggiore è 42...come faccio a dargli un range?

  5. #5
    Non vorrei dire una sciocchezza, ma se la gsl_ran_chisq che usi è questa, restituisce un dobule, non un unsigned int; verifica se questo è corretto, così ti posso dare un suggerimento adeguato per la faccenda del range.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    51
    Se vai avanti nel manuale trovi gli esempi...al posto della poisson ho messo la chisq...mi da numeri dal 6 al 42...però vorrei dei numeri dal 1 al 1000 visto che devo generare 1000 numeri casuali...

  7. #7
    Sì, ma ribadisco, nel manuale la funzione restituisce un double, per cui trovo molto strano che tu assegni il risultato di quella funzione ad un unsigned int... sei sicuro di quello che stai facendo?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    51
    Assolutamente no!Non sono sicuro ma è l'unico esempio che ho trovato...in più è pure nel manuale di Gnu...la variabile k sia double che int mi visualizza una serie di numeri...

    Facciamo che sia double k = ...

    Come faccio a dire che devo essere tra 1 e 1000????

  9. #9
    codice:
    tuoNumero = (numeroCasuale - minNumeroCasuale)*(maxTuoNumero-minTuoNumero)/(maxNumeroCasuale-minNumeroCasuale)+minTuoNumero;
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    51
    Ci proverò...grazie!!!

    Speravo ci fosse qualche funzione particolare...invece...sigh...e pensare che è solo l'inizio dell'esercizio questo...

    Penso che mi sparerò prima di finirlo...

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.