Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    scusa se ho ripetuto questo post...

    ma è proprio questo il punto....non mi funziona!

    anke provando con il generatore che mi avete scrtitto sopra, mi genera numeri in un range troppo ristretto e siccome dovrei generarne centinaia (potenzialmente migliaia) al secondo, questo metodo non funziona.

    nella fattispecie....mi serve l'equivalente del metodo java Math.random() che genera un numero casuale compreso tra 0 e 1 con precisione di 15 cifre decimali....


    ...oppure basterebbe che la rand() facesse il suo lavoro di generarmi un numero casuale tra 0 e 2.000.000.000 e passa....ma non ne vuol sapere di cambiarlo ...

  2. #12
    Se ti serve un algoritmo molto veloce...

    It is designed with consideration on the flaws of various existing generators.

    The algorithm is coded into a C source downloadable below.
    Far longer period and far higher order of equidistribution than any other implemented generators. (It is proved that the period is 2^19937-1, and 623-dimensional equidistribution property is assured.)

    Fast generation. (Although it depends on the system, it is reported that MT is sometimes faster than the standard ANSI-C library in a system with pipeline and cache memory.)

    Efficient use of the memory. (The implemented C-code mt19937.c consumes only 624 words of working area.)

    dai un occhiata qui http://www.math.keio.ac.jp/~matumoto/emt.html
    e qui http://www.math.keio.ac.jp/~matumoto/cokus.c

  3. #13
    grazie mille...ho fatto con la randomize()...

    il problema è che se eseguo il programma due volte molto velocemente (dato che termina in pochissimi millisecondi) genera sempre la stessa sequenza. Se invece le faccio ad ALMENO un secondo di distanza invece fa le cose fatte bene.

    io credo che la randomize dipenda molto dal secondo del timer...sbaglio?

  4. #14
    Se usi windows prova questa funzione per generare il seme da passare a randomize

    codice:
    #include <windows.h>
    #include <iostream>
    #include <objbase.h>
    using namespace std;
    
    int makeseed();
    
    int main()
    {
            srand(makeseed());
    	cout << rand() << endl;
    	srand(makeseed());
    	cout << rand() << endl;
    	return 0;
    }
    
    
    int makeseed()
    {
    	int seed, i;	
    	GUID guid;
    	int * guid_converted;
    	
    	CoCreateGuid(&guid);
    
    	guid_converted = reinterpret_cast<int*>(&guid);	
    
    	for(i=0;i<sizeof(guid)/sizeof(int); ++i)
    	{		
            seed ^= guid_converted[i];		
    	}	
    	
    	return  seed;
    }

  5. #15
    Ti dirò di più, puoi anche usarla come generatore di numeri casuali al posto di rand().

  6. #16
    provo stasera...x ora grazie mille!

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.