Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    [c] srand ed esecuzioni consecutive

    ciao a tutti,
    sto usando srand come generatore di numeri casuali e, com'è riportato ovunque, lo inizializzo in questa maniera: srand(time(NULL)).

    Il fatto è che a due esecuzioni consecutive del programma (eseguito con una sintassi tipo
    $ mioprog > out1 && mioprog > out2 ), ottengo lo stesso numero casuale. C'è un modo per evitare ciò direttamente nel codice del programma?
    Vi ringrazio anticipatamente
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Dove hai usato srand nel programma? Mostra il codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

    Re: [c] srand ed esecuzioni consecutive

    Originariamente inviato da Hysoka
    Il fatto è che a due esecuzioni consecutive del programma (eseguito con una sintassi tipo
    $ mioprog > out1 && mioprog > out2 ), ottengo lo stesso numero casuale.
    se avvengono nello stesso secondo, il seed (che generi con time la cui granularità è appunto un secondo) è lo stesso per tutte e due le esecuzioni, perciò ottieni giustamente la stessa sequenza.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    Re: Re: [c] srand ed esecuzioni consecutive

    Originariamente inviato da MacApp
    se avvengono nello stesso secondo, il seed (che generi con time la cui granularità è appunto un secondo) è lo stesso per tutte e due le esecuzioni, perciò ottieni giustamente la stessa sequenza.
    questo lo so già. Vorrei una soluzione a ciò.
    @oregon: nel main....
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464

    Re: Re: Re: [c] srand ed esecuzioni consecutive

    Originariamente inviato da Hysoka
    Vorrei una soluzione a ciò.
    Inserisci come "seme" nella srand, l'ID del processo (o del thread principale).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    Re: Re: Re: Re: [c] srand ed esecuzioni consecutive

    Originariamente inviato da oregon
    Inserisci come "seme" nella srand, l'ID del processo (o del thread principale).
    mi piace come idea...come lo ottengo?
    [risolto] funziona
    grazie
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: Re: Re: [c] srand ed esecuzioni consecutive

    Originariamente inviato da Hysoka
    mi piace come idea...come lo ottengo?
    [risolto] funziona
    grazie
    Fare vedere come hai risolto è cosa brutta?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    Re: Re: Re: Re: Re: Re: [c] srand ed esecuzioni consecutive

    Originariamente inviato da Alex'87
    Fare vedere come hai risolto è cosa brutta?
    you're right, man

    codice:
    int main(int argc, char **argv)
    {
    	//input file
    	char *i_file = INPUT;
    	//output file
    	char *o_file = OUTPUT;
    	//n=number of points to interpolate
    	int n=0;
    	//type of interpolation
    	int interpolation=QSPLINE;
    	//displacement between every x-points to plot interpolated function
    	double step=STEP;
    	//x,y=read by file
    	//plot_x, plot_y = function to plot
    	double x[MAX],y[MAX],*plot_x,*plot_y;
    	//reference to input file handler
    	FILE *input;
    	//generic intepolator (polynomial, qspline, ...)
    	void * interpolator = NULL;
    	//generic evaluation function (depends by the interpolator)
    	double (*eval)(void*,double) ;
    	
    	srand(getpid());
    ....
    }
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  9. #9

    Re: Re: Re: Re: Re: [c] srand ed esecuzioni consecutive

    Originariamente inviato da Hysoka
    [risolto] funziona
    grazie
    attento che il pid, non è un identificatore universale.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    il rand mi serve per scegliere un colore a random...se un 1000 esecuzioni me ne sceglie due uguali non mi interessa più di tanto...xo se su ogni esecuzuoni, i colori erano identici, allora non mi stava più bene
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

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.