#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int rand_a_b( int min, int max) {
return rand ( ) % ( max
- min
) + min
; }
char getLettreRandom( int nombreAleatoire)
{
// Tirage de lettre en fonction de sa probabilité d'apparaitre dans un corpus donné de 1 486 104 lettres
// Source wiki.
// On fait correspondre les occurrences avec les lettres.
int occurrences[ ] = { 225947 , 121895 , 117110 , 115465 , 111103 , 108812 , 100500 , 96785 , 83668 ,
82762 , 56269 , 50003 , 46335 , 45521 , 24975 , 20889 , 16351 , 13822 , 11298 ,
8351 , 5928 , 4725 , 2093 , 1747 , 745 , 695 , 283 , } ;
char lettres[ ] = "esaitnrulodcpmvqfbghjxyzwk" ;
int i, total;
char retour = ' ' ; /* Valeur par défaut au cas où */
for ( i= 0 , total = 0 ; i < 26 ; i++ )
{
if ( ( nombreAleatoire > total) && ( nombreAleatoire < total + occurrences[ i] ) )
{
retour = lettres[ i] ;
break ;
}
total += occurrences[ i] ;
}
return retour;
}
int main( ) {
//srand(time(NULL));
//int nbAleatoire1=rand_a_b(0,1486104);
//int nbAleatoire2=rand_a_b(0,1486104);
//int nbAleatoire3=rand_a_b(0,1486104);
//nbAleatoire=rand()%1533628;
//printf("%d , %d , %d \n",nbAleatoire1,nbAleatoire2,nbAleatoire3);
int x = 0 ;
for ( x= 0 ; x< 20 ; ++ x) {
printf ( " Nombre %d = %d\n " , x
+ 1 , rand_a_b
( 0 , 1486104 ) ) ; }
//char c = ' ';
//c= getLettreRandom(nbAleatoire1);
//printf("%c\n",c);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8dGltZS5oPgoKIAoKaW50IHJhbmRfYV9iKGludCBtaW4saW50IG1heCl7CgkKICAgIHJldHVybiByYW5kKCklKG1heC1taW4pK21pbjsKfQoKCmNoYXIgZ2V0TGV0dHJlUmFuZG9tKGludCBub21icmVBbGVhdG9pcmUpCiAgICB7CgkJLy8gVGlyYWdlIGRlIGxldHRyZSBlbiBmb25jdGlvbiBkZSBzYSBwcm9iYWJpbGl0w6kgZCdhcHBhcmFpdHJlIGRhbnMgdW4gY29ycHVzIGRvbm7DqSBkZSAxIDQ4NiAxMDQgbGV0dHJlcwoJCS8vIFNvdXJjZSB3aWtpLgoJCQoKCgkJLy8gT24gZmFpdCBjb3JyZXNwb25kcmUgbGVzIG9jY3VycmVuY2VzIGF2ZWMgbGVzIGxldHRyZXMuCiAgICAgICBpbnQgb2NjdXJyZW5jZXNbXSA9IHsyMjU5NDcsIDEyMTg5NSwgMTE3MTEwLDExNTQ2NSwxMTExMDMsMTA4ODEyLDEwMDUwMCw5Njc4NSw4MzY2OCwKCQkJCQkJCTgyNzYyLDU2MjY5LDUwMDAzLDQ2MzM1LDQ1NTIxLDI0OTc1LDIwODg5LDE2MzUxLDEzODIyLDExMjk4LAoJCQkJCQkJODM1MSw1OTI4LDQ3MjUsMjA5MywxNzQ3LDc0NSw2OTUsMjgzLH07CiAgICAgICBjaGFyIGxldHRyZXNbXSA9ICJlc2FpdG5ydWxvZGNwbXZxZmJnaGp4eXp3ayI7CgoKICAgICAgIGludCBpLCB0b3RhbDsKICAgICAKICAgICAgIGNoYXIgcmV0b3VyID0gJyAnOyAvKiBWYWxldXIgcGFyIGTDqWZhdXQgYXUgY2FzIG/DuSAqLwogICAgICAgZm9yIChpPTAsIHRvdGFsID0gMDsgaSA8IDI2OyBpKyspCiAgICAgICB7CiAgICAgICAgICAgaWYgKCAobm9tYnJlQWxlYXRvaXJlID4gdG90YWwpICYmIChub21icmVBbGVhdG9pcmUgPCB0b3RhbCArIG9jY3VycmVuY2VzW2ldKSkKICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0b3VyID0gbGV0dHJlc1tpXTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgICAgdG90YWwgKz0gb2NjdXJyZW5jZXNbaV07CiAgICAgICB9CiAgICAgICByZXR1cm4gcmV0b3VyOwogICAgfQoKCgppbnQgbWFpbigpewoKCQoJLy9zcmFuZCh0aW1lKE5VTEwpKTsKCS8vaW50IG5iQWxlYXRvaXJlMT1yYW5kX2FfYigwLDE0ODYxMDQpOwoJLy9pbnQgbmJBbGVhdG9pcmUyPXJhbmRfYV9iKDAsMTQ4NjEwNCk7CgkvL2ludCBuYkFsZWF0b2lyZTM9cmFuZF9hX2IoMCwxNDg2MTA0KTsKCS8vbmJBbGVhdG9pcmU9cmFuZCgpJTE1MzM2Mjg7CgkvL3ByaW50ZigiJWQgICwgJWQgLCAlZCBcbiIsbmJBbGVhdG9pcmUxLG5iQWxlYXRvaXJlMixuYkFsZWF0b2lyZTMpOwoKCWludCB4ID0gMDsKCWZvciggeD0wOyB4PDIwIDsgKyt4KXsKCQlwcmludGYoIiBOb21icmUgJWQgPSAlZFxuIix4KzEscmFuZF9hX2IoMCwxNDg2MTA0KSk7Cgl9CgoJLy9jaGFyIGMgPSAnICc7ICAgCgkvL2M9CWdldExldHRyZVJhbmRvbShuYkFsZWF0b2lyZTEpOwoJLy9wcmludGYoIiVjXG4iLGMpOwoKCgoJZ2V0Y2hhcigpOwoJCn0=