Generazione stringhe casuali

di il
29 risposte

29 Risposte - Pagina 2

  • Re: Generazione stringhe casuali

    A questo punto mi chiedo da dove sia uscita, sebbene sbagliata, questa?!

    Frank2000 ha scritto:


    stringa = 48 + rand() %(122-48);
  • Re: Generazione stringhe casuali

    oregon ha scritto:


    Rifletti ... se 3n valesse 300 come faresti a generare un numero compreso tra 0 e 300 ?
    1 + rand() % (300 +1)?
  • Re: Generazione stringhe casuali

    1 + rand() % (300 + 1)?
  • Re: Generazione stringhe casuali

    Frank2000 ha scritto:


    se invece devo generare casualmente un numero compreso tra 0 e 3n (dove n è un valore preso da tastiera) la seguente espressione è corretta? :
    valore = 1 + rand() % (3*n);
    Innanzitutto intendi l'intervallo (0;3n) oppure [0;3n]?

    Frank2000 ha scritto:


    1 + rand() % (300 + 1)?
    La precedente espressione genera un numero appartenente all'intervallo [1;301]

    Tagliamo la testa al toro... sai come funziona l'operatore % o stai andando a tentativi?
  • Re: Generazione stringhe casuali

    Nippolo ha scritto:


    Frank2000 ha scritto:


    se invece devo generare casualmente un numero compreso tra 0 e 3n (dove n è un valore preso da tastiera) la seguente espressione è corretta? :
    valore = 1 + rand() % (3*n);
    Innanzitutto intendi l'intervallo (0;3n) oppure [0;3n]?

    Frank2000 ha scritto:


    1 + rand() % (300 + 1)?
    La precedente espressione genera un numero appartenente all'intervallo [1;301]

    Tagliamo la testa al toro... sai come funziona l'operatore % o stai andando a tentativi?
    (0;300), sì so come funziona
  • Re: Generazione stringhe casuali

    Nippolo ha scritto:


    A questo punto mi chiedo da dove sia uscita, sebbene sbagliata, questa?!

    Frank2000 ha scritto:


    stringa = 48 + rand() %(122-48);
    Devo assegnare a stringa un carattere alfanumerico... leggi tutti i messaggi, non capisco perchè dici che sia sbagliata
  • Re: Generazione stringhe casuali

    Frank2000 ha scritto:


    Devo assegnare a stringa un carattere alfanumerico... leggi tutti i messaggi, non capisco perchè dici che sia sbagliata
    Intendevo dire che mi sembra strano che lì ci sei arrivato da solo, mentre qui hai tutti questi problemi.
    Cmq è sbagliata in quanto tu stesso hai corretto poi in 123-48.

    Frank2000 ha scritto:


    (0;300), sì so come funziona
    (0;300) coincide con [1;299], è questo quello che stai cercando di fare?
    In ogni caso se sai come funziona l'operatore modulo, mi sembra strano che tu non riesca a venirne a capo autonomamente.
    In generale l'espressione
    a % b
    può ritornare b valori diversi appartenenti all'intervallo [0;b-1]. In pratica il secondo operando ci fornisce l'ampiezza dell'intervallo, il quale inizia sempre da 0; se poi vogliamo spostare quell'intervallo verso destra o sinistra sulla retta dei numeri relativi, basta semplicemente sommare o sottrarre una quantità opportuna.
  • Re: Generazione stringhe casuali

    Nippolo ha scritto:


    Frank2000 ha scritto:


    Devo assegnare a stringa un carattere alfanumerico... leggi tutti i messaggi, non capisco perchè dici che sia sbagliata
    Intendevo dire che mi sembra strano che lì ci sei arrivato da solo, mentre qui hai tutti questi problemi.
    Cmq è sbagliata in quanto tu stesso hai corretto poi in 123-48.

    Frank2000 ha scritto:


    (0;300), sì so come funziona
    (0;300) coincide con [1;299], è questo quello che stai cercando di fare?
    In ogni caso se sai come funziona l'operatore modulo, mi sembra strano che tu non riesca a venirne a capo autonomamente.
    In generale l'espressione
    a % b
    può ritornare b valori diversi appartenenti all'intervallo [0;b-1]. In pratica il secondo operando ci fornisce l'ampiezza dell'intervallo, il quale inizia sempre da 0; se poi vogliamo spostare quell'intervallo verso destra o sinistra sulla retta dei numeri relativi, basta semplicemente sommare o sottrarre una quantità opportuna.
    Ci sono arrivato riflettendoci grazie ad oregon. Comunque se l'intervallo è aperto (Quindi non comprende 0 e 3n), allora il risultato sarà:
    1 + rand() % (3*n - 2) ... credo sia così, giusto?
  • Re: Generazione stringhe casuali

    No, è
    1 + rand() % (3n - 1)
    d'altronde sostituendo nella "formula generale" si ottiene
    min + rand() % (max - min + 1) = 1 + rand() % [(3n - 1) - (1) + 1] = 1 + rand() % (3n - 1)
  • Re: Generazione stringhe casuali

    int res = rand()%(n*3+1);
    N=2 -> 2*3 = 6 -> comprende 0-5 -> somma 1 per avere il 6.
  • Re: Generazione stringhe casuali

    Nippolo ha scritto:


    No, è
    1 + rand() % (3n - 1)
    d'altronde sostituendo nella "formula generale" si ottiene
    min + rand() % (max - min + 1) = 1 + rand() % [(3n - 1) - (1) + 1] = 1 + rand() % (3n - 1)
    Ah sì ok giusto. perchè rand() % (3n - 1) può assumere valori da 0 a 3n - 2, aggiungendo 1 si va da 0 a 3n - 1. Grazie mille
  • Re: Generazione stringhe casuali

    Frank2000 ha scritto:


    Ah sì ok giusto. perchè rand() % (3n - 1) può assumere valori da 0 a 3n - 2, aggiungendo 1 si va da 0 a 3n - 1. Grazie mille
    Di niente!

    TheorLaw ha scritto:


    int res = rand()%(n*3+1);
    N=2 -> 2*3 = 6 -> comprende 0-5 -> somma 1 per avere il 6.
    Quindi quale sarebbe l'intervallo di appartenenza di res?
  • Re: Generazione stringhe casuali

    Nippolo ha scritto:


    Frank2000 ha scritto:


    Ah sì ok giusto. perchè rand() % (3n - 1) può assumere valori da 0 a 3n - 2, aggiungendo 1 si va da 0 a 3n - 1. Grazie mille
    Di niente!

    TheorLaw ha scritto:


    int res = rand()%(n*3+1);
    N=2 -> 2*3 = 6 -> comprende 0-5 -> somma 1 per avere il 6.
    Quindi quale sarebbe l'intervallo di appartenenza di res?
    0-6
  • Re: Generazione stringhe casuali

    Ok, ma qual è l'utilità?
    L'op cercava la formula relativa all'intervallo [1;3n-1].
  • Re: Generazione stringhe casuali

    se invece devo generare casualmente un numero compreso tra 0 e 3n (dove n è un valore preso da tastiera) la seguente espressione è corretta? :
    io avevo capito da 0 al 3*n..
Devi accedere o registrarti per scrivere nel forum
29 risposte