Innovid – כללי 3

מאת JobHunt

נתונה פונקציה – random 5 שמחזירה מספר רנדומלי בין 1 ל 5 ממש את random 7.

תשובה מוצעת:

int randbit( void )
{
while( 1 )
{
int r = rand5();
if( r <= 4 ) return(r & 1);
}
}

int randint( int nbits )
{
int result = 0;
while( nbits– )
{
result = (result<<1) | randbit();
}
return( result );
}

int rand7( void )
{
while( 1 )
{
int r = randint( 3 ) + 1;
if( r <= 7 ) return( r );
}
}