Example of Using Pseudorandom Number Generation Functions

Find Pseudorandom Co-primes

void FindCoPrimes(void){
   int size;


   // define Pseudo Random Generator (default settings)
   ippsPRNGGetSize(&size);
   IppsPRNGState* pPrng = (IppsPRNGState*)(new Ipp8u [size] );
   ippsPRNGInit(160, pPrng);


   // define 256-bits Big Numbers X and Y
   const int bnBitSize = 256;
   IppsBigNumState* bnX = New_BN(bnBitSize/32);
   IppsBigNumState* bnY = New_BN(bnBitSize/32);


   // define temporary Big Numbers GCD and 1
   IppsBigNumState* bnGCD = New_BN(bnBitSize/32);
   Ipp32u one = 1;
   IppsBigNumState* bnOne = New_BN(1, &one);




   // generate pseudo random X and Y
   // while GCD(X,Y) != 1
   Ipp32u result;
   int counter;
   for(counter=0,result=1; result; counter++) {
      ippsPRNGen_BN(bnX, bnBitSize, pPrng);
      ippsPRNGen_BN(bnY, bnBitSize, pPrng);
      ippsGcd_BN(bnX, bnY, bnGCD);
      ippsCmp_BN(bnGCD, bnOne, &result);
   }


   cout <<"Coprimes:" <<endl;
   Type_BN("X: ", bnX); cout <<endl;
   Type_BN("Y: ", bnY); cout <<endl;
   cout <<"were fond on " <<counter <<" attempt" <<endl;


   delete [] (Ipp8u*)pPrng;
   delete [] (Ipp8u*)bnX;
   delete [] (Ipp8u*)bnY;
   delete [] (Ipp8u*)bnGCD;
   delete [] (Ipp8u*)bnOne;
}