From: Jorge G. <jor...@gm...> - 2009-06-17 00:57:08
|
Thanks everybody for yours answers!!! 2009/6/16 <Mat...@bm...> > Hello Jorge, > > Two things I notice are. > > 1. In answer to your question about Chinese characters - The rand() > function will generate a random number between 0 and 32767 (or more > accurately 0 to RAND_MAX) which you are casting into a char. ASCII printable > characters reside in the range from 32 to 126. > > 2. You are not generating random numbers as you expect because you have not > set a seed with which to generate random numbers from. Check the function > srand. The way it stands now, you will produce the same sequence of > characters each time the program is run. The closest approximation to > "random" is to use the system clock as a seed as this is different with each > execution of the program. > > void crearArchivo(char* nombreArchivo, int n) > { > ofstream fSalida; > fSalida.open(nombreArchivo); > srand(time(NULL)); // Set a random seed > if(fSalida.is_open()) > { > for(int i=0;i<n;i++) > { > char c=(char)(rand() % 94 + 32); //Only generate numbers > in range 32 to 126 > fSalida<<c; > } > } > else > { > cout<<"el arhivo no se pudo crear"; > } > fSalida.close(); > } > > int main(int argc, char *argv[]) > { > crearArchivo("nuevo.txt",1000) ; > system("PAUSE"); > return EXIT_SUCCESS; > } > > > Cheers, > > Matt > > > From: Jorge Guevara [mailto:jor...@gm...] > > Sent: 16 June 2009 21:25 > > To: dev...@li... > > Subject: [Dev-C++] chinese characters > > > I need to generate random characters for experiment with string matching > algorithms , n=size of text > > nombreArchivo=filename, when n is small the code below generate ascii > characters, but when n is greater, (example n > > =7000000), the code below generate chinesse characters, why? > > > sorry for my english :) > > > > void crearArchivo(char* nombreArchivo, int n) > > { > > ofstream fSalida; > > fSalida.open(nombreArchivo); > > if(fSalida.is_open()) > > { > > for(int i=0;i<n;i++) > > { char c=(char)rand(); > > fSalida<<c; > > } > > } > > else > > { > > cout<<"el arhivo no se pudo crear"; > > } > > > fSalida.close(); > > } > > > > int main() > > { > > crearArchivo("nuevo.txt",1000) ; > > system("PAUSE"); > > return EXIT_SUCCESS; > > } > > > > -- > > Jorge > This email was sent from an email account of BMW (UK) Manufacturing > Limited. BMW (UK) Manufacturing Limited is a company registered in England > and Wales with company number 3950868; and has its offices at Ellesfield > Avenue, Bracknell, Berkshire, RG12 8TA; registered in England and Wales. The > contents of this e-mail are confidential and may be privileged and subject > to internal monitoring. If you are not the addressee indicated in this > message, you may not copy, forward, disclose, deliver or otherwise use it or > any part of it in any form whatsoever. You should then kindly notify the > sender by replying to this message and destroy it thereafter. Opinions, > conclusions and other information in this message that do not relate to the > official business of any BMW Group Company shall be understood as neither > given nor endorsed by them. > -- Jorge http://jorge.sistemasyservidores.com Escuela de Informática - Universidad Nacional de Trujillo |