Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    [c]come posso generare un array di stringhe e trovarne una casuale

    spiego meglio voglio creare una sorta di vocabolario quindi creare un array di vocaboli
    const char *v[3];
    v[0] = "banana";
    v[1] = "casa";
    v[2] = "cercare";
    ho provato questo e dovrebbe funzionare,adesso come faccio a creare una sorta di dado che mi dia v0 o v1 o v2 dovrei usare srand se si in che modo?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    ma questo non genera un numero da 1 a quello che voglio ma a me partono da 0

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Aggiungi 1
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Più in generale, dati due distinti interi non segnati min, max tali che 0 < min < max, l'idioma standard per generare un numero pseudorandom compreso tra min e max fa uso dell'operatore resto del C, ed è il seguente:

    codice:
        val = min + rand() % (max - min +1);

    L'espressione si semplifica in modo ovvio quando min = 0. Di vitale importanza l'incremento unitario presente nell'espressione del divisore (per chi ha bisogno dei sottotitoli, l'espressione tra parentesi evidenziata in rosso, a destra del segno %), troppo spesso dimenticato negli esempi in letteratura e sul web. Il resto è sempre, per definizione, strettamente minore del divisore!
    Ultima modifica di M.A.W. 1968; 04-06-2014 a 14:31
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Infatti, tramite il secondo link si può leggere la formula usata nell'esempio

    iSecret = rand() % 10 + 1;

    con cui si ottiene un numero tra 1 e 10 (ottenibile dalla formula generale dell'ottimo MAW) ...

    Per un dato mi sembra scontato scrivere

    numero = rand() % 6 + 1;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    srand (time(NULL));
    parolasegreta = rand(v) %10 + 1;

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da M.A.W. 1968 Visualizza il messaggio
    dati due distinti interi non segnati min, max tali che 0 < min < max
    In realtà possono benissimo avere segno. L'unica condizione necessaria è che min < max
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da edoardol Visualizza il messaggio
    srand (time(NULL));
    parolasegreta = rand(v) %10 + 1;
    codice:
    indice_parola = rand() % lunghezza_array;
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  10. #10
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    In realtà possono benissimo avere segno. L'unica condizione necessaria è che min < max
    Estensione certamente possibile da un punto di vista meramente algebrico, ma sostanzialmente inutile parlando di generazione di numeri pseudorandom destinati ad indicizzare un array in linguaggio C, come appunto nel presente thread.

    In primo luogo, molti buoni compilatori (e vari supporti, come SPLINT o safer-C) pongono esplicitamente dei limiti all'uso di numeri segnati in tutte le espressioni assimilabili al subscripting, quelle di cui al paragrafo 6.5.2.1 del C'99, come già ho spiegato varie volte (ad esempio qui). Secondariamente, le norme di stile concordano nel raccomandare caldamente l'uso di size_t per ogni tipo di indici. Terzo, e non ultimo, l'OP potrebbe confondersi.
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

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.