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;
}
 

Submit feedback on this help topic

Copyright © 2000 - 2011, Intel Corporation. All rights reserved.