25%와 75% 확률로 0과 1을 생성합니다.
동일한 확률로 0 또는 1을 반환하는 함수 rand50()이 주어지면 rand50()만 사용하여 75% 확률로 1과 25% 확률로 0을 반환하는 함수를 작성하세요. rand50() 메서드에 대한 호출 수를 최소화합니다. 또한 다른 라이브러리 함수 및 부동 소수점 연산의 사용은 허용되지 않습니다.
아이디어는 사용하는 것입니다 비트별 OR . 비트별 OR은 두 비트를 사용하여 두 비트가 모두 0이면 0을 반환하고 그렇지 않으면 결과는 1입니다. 따라서 1을 반환할 확률은 75%입니다.
다음은 위의 아이디어를 구현한 것입니다.
C++ // Program to print 1 with 75% probability and 0 // with 25% probability #include using namespace std ; // Random Function to that returns 0 or 1 with // equal probability int rand50 () { // rand() function will generate odd or even // number with equal probability. If rand() // generates odd number the function will // return 1 else it will return 0. return rand () & 1 ; } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise OR bool rand75 () { return rand50 () | rand50 (); } // Driver code to test above functions int main () { // Initialize random number generator srand ( time ( NULL )); for ( int i = 0 ; i < 50 ; i ++ ) cout < < rand75 (); return 0 ; }
Java // Java program to print 1 with 75% probability and 0 // with 25% probability class GFG { // Random Function to that returns 0 or 1 with // equal probability static int rand50 () { // rand() function will generate odd or even // number with equal probability. If rand() // generates odd number the function will // return 1 else it will return 0. return ( int ) ( 10 * Math . random ()) & 1 ; } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise OR static int rand75 () { return rand50 () | rand50 (); } // Driver code public static void main ( String [] args ) { // Initialize random number generator //srand(time(null)); for ( int i = 0 ; i < 50 ; i ++ ) { System . out . print ( rand75 ()); } } } // This code is contributed by 29AjayKumar
Python3 # Program to print 1 with 75% probability and 0 # with 25% probability from random import randrange # Random Function to that returns 0 or 1 with # equal probability def rand50 (): # The randrange function will generate integer # between the half closed interval at end # Here by passing parameter as 02 # the function will generate integer between 0 and 1 return ( int )( randrange ( 0 2 )) & 1 # Random Function to that returns 1 with 75% # probability and 0 with 25% probability using # Bitwise OR def rand75 (): return rand50 () | rand50 () # Driver code to test above functions for i in range ( 0 50 ): print ( rand75 () end = '' ) # This code is contributed by meetgor.
C# // C# program to print 1 with 75% probability and 0 // with 25% probability using System ; public class GFG { // Instantiate random number generator static Random rand = new Random (); // Random Function to that returns 0 or 1 with // equal probability static int rand50 () { // rand() function will generate 1 or 0 // with equal probability return rand . Next ( 0 2 ); } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise OR static int rand75 () { return rand50 () | rand50 (); } public static void Main ( string [] args ) { for ( int i = 0 ; i < 50 ; i ++ ) { Console . Write ( rand75 ()); } } } //this code is contributed by phasing17
PHP // Program to print 1 with 75% probability // and 0 with 25% probability // Random Function to that returns 0 or // 1 with equal probability function rand50 () { // rand() function will generate // odd or even number with equal // probability. If rand() generates // odd number the function will // return 1 else it will return 0. return rand () & 1 ; } // Random Function to that returns // 1 with 75% probability and 0 // with 25% probability using // Bitwise OR function rand75 () { return rand50 () | rand50 (); } // Driver Code // Initialize random // number generator srand ( time ( NULL )); for ( $i = 0 ; $i < 50 ; $i ++ ) echo rand75 (); // This code is contributed m_kit ?>
JavaScript < script > // Program to print 1 with 75% probability and 0 // with 25% probability // Random Function to that returns 0 or 1 with // equal probability function rand50 () { // rand() function will generate odd or even // number with equal probability. If rand() // generates odd number the function will // return 1 else it will return 0. return Math . floor ( Math . random () * 10 ) & 1 ; } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise OR function rand75 () { return rand50 () | rand50 (); } // Driver code to test above functions // Initialize random number generator for ( let i = 0 ; i < 50 ; i ++ ) document . write ( rand75 ()); // This code is contributed by gfgking < /script>
산출
11101010110101011010000101011110100010111110101111
시간 복잡도: 오(1)
보조 공간: 오(1)
비슷한 라인에서 우리는 또한 사용할 수 있습니다 비트별 AND . 75% 확률로 0을 반환하므로 결과를 뒤집어야 합니다.
// Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise AND bool rand75() { return !(rand50() & rand50()); } 다음은 위의 아이디어를 구현한 것입니다.
C++ #include using namespace std ; // Random Function to that returns 0 or 1 with // equal probability int rand50 () { // rand() function will generate odd or even // number with equal probability. If rand() // generates odd number the function will // return 1 else it will return 0. return rand () & 1 ; } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise AND bool rand75 () { return ! ( rand50 () & rand50 ()); } // Driver code to test above functions int main () { // Initialize random number generator srand ( time ( NULL )); for ( int i = 0 ; i < 50 ; i ++ ) cout < < rand75 (); return 0 ; }
Java class GFG { // Random Function to that returns 0 or 1 with // equal probability static int rand50 () { // rand() function will generate odd or even // number with equal probability. If rand() // generates odd number the function will // return 1 else it will return 0. return ( int ) ( 10 * Math . random ()) & 1 ; } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise AND static int rand75 () { return ( rand50 () & rand50 ()) ^ 1 ; } // Driver code public static void main ( String [] args ) { // Initialize random number generator //srand(time(null)); for ( int i = 0 ; i < 50 ; i ++ ) { System . out . print ( rand75 ()); } } }
Python3 from random import randrange # Random Function to that returns 0 or 1 with # equal probability def rand50 (): return (( int )( randrange ( 0 2 )) & 1 ) def rand75 (): return ( rand50 () & rand50 ()) ^ 1 for i in range ( 0 50 ): print ( rand75 () end = '' )
C# // C# program to implement the approach using System ; class GFG { // Random Function to that returns 0 or 1 with // equal probability static int rand50 () { // Instantiate random number generator using // system-supplied value as seed. var rand = new Random (); // rand() function will generate 0 or 1 // number with equal probability. return rand . Next ( 0 2 ); } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise AND static int rand75 () { return ( rand50 () & rand50 ()) ^ 1 ; } // Driver code public static void Main ( string [] args ) { // Initialize random number generator // srand(time(null)); for ( int i = 0 ; i < 50 ; i ++ ) { Console . Write ( rand75 ()); } } } // This code is contributed by phasing17
JavaScript // JavaScript program to implement the approach // Random Function to that returns 0 or 1 with // equal probability function rand50 () { return ( Math . floor ( Math . random () * 2 ) & 1 ); } function rand75 () { return ( rand50 () & rand50 ()) ^ 1 ; } for ( var i = 0 ; i < 50 ; i ++ ) process . stdout . write ( rand75 (). toString ()); //This code is contributed by phasing17
산출
11111111000111101111110011111110011110111111010111
Bitwise OR 및 Bitwise AND 연산자를 다음으로 대체할 수 있습니다. OR 및 AND 연산자 또한 -
// Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // OR or AND operator int rand75() { return !(rand50() && rand50()); // return rand50() || rand50() } 우리는 또한 다음을 사용하여 결과를 얻을 수 있습니다. 왼쪽 시프트 연산자 및 비트별 XOR -
C++ // Program to print 1 with 75% probability and 0 // with 25% probability #include using namespace std ; // Random Function to that returns 0 or 1 with // equal probability int rand50 () { // rand() function will generate odd or even // number with equal probability. If rand() // generates odd number the function will // return 1 else it will return 0. return rand () & 1 ; } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // left shift and Bitwise XOR int rand75 () { // x is one of {0 1} int x = rand50 (); x = x < < 1 ; // x is now one of {00 10} x = x ^ rand50 (); // x is now one of {00 01 10 11} return ( x > 0 ) ? 1 : 0 ; } // Driver code to test above functions int main () { // Initialize random number generator srand ( time ( NULL )); for ( int i = 0 ; i < 50 ; i ++ ) cout < < rand75 (); return 0 ; }
Java // Java program to print 1 with 75% probability and 0 // with 25% probability class GFG { // Random Function to that returns 0 or 1 with // equal probability static int rand50 () { // rand() function will generate odd or even // number with equal probability. If rand() // generates odd number the function will // return 1 else it will return 0. return ( int ) ( 10 * Math . random ()) & 1 ; } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // left shift and Bitwise XOR static int rand75 () { // x is one of {0 1} int x = rand50 (); x = x < < 1 ; // x is now one of {00 10} x = x ^ rand50 (); // x is now one of {00 01 10 11} return ( x > 0 ) ? 1 : 0 ; } // Driver code public static void main ( String [] args ) { for ( int i = 0 ; i < 50 ; i ++ ) System . out . print ( rand75 ()); } } // This code is contributed by 29AjayKumar
Python3 # Program to print 1 with 75% probability and 0 # with 25% probability from random import randrange # Random Function to that returns 0 or 1 with # equal probability def rand50 (): # rand range function generates a integer between # the provided ranges which is half closed interval # It will generate integer 0 or 1 if passed 02 as parameter return ( int )( randrange ( 0 2 )) & 1 # Random Function to that returns 1 with 75% # probability and 0 with 25% probability using # left shift and Bitwise XOR def rand75 (): # x is one of {0 1} x = rand50 () x = x < < 1 # x is now one of {00 10} x = x ^ rand50 () # x is now one of {00 01 10 11} return 1 if ( x > 0 ) else 0 # Driver code to test above functions for i in range ( 0 50 ): print ( rand75 () end = '' ) # This code is contributed by meetgor.
C# // C# program to print 1 with 75% probability and 0 // with 25% probability using System ; public class GFG { // Random Function to that returns 0 or 1 with // equal probability static Random rnd = new Random (); static int rand50 () { // Next(2) will generate 0 or 1 with equal probability return rnd . Next ( 2 ); } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // left shift and Bitwise XOR static int rand75 () { // x is one of {0 1} int x = rand50 (); x = x < < 1 ; // x is now one of {00 10} x = x ^ rand50 (); // x is now one of {00 01 10 11} return ( x > 0 ) ? 1 : 0 ; } static public void Main (){ for ( int i = 0 ; i < 50 ; i ++ ) Console . Write ( rand75 ()); } } // This code is contributed by shruti456rawal
PHP // Program to print 1 with // 75% probability and 0 // with 25% probability // Random Function to that // returns 0 or 1 with // equal probability function rand50 () { // rand() function will // generate odd or even // number with equal // probability. If rand() // generates odd number // the function will return // 1 else it will return 0. return rand () & 1 ; } // Random Function to that // returns 1 with 75% // probability and 0 with // 25% probability using // left shift and Bitwise XOR function rand75 () { // x is one of {0 1} $x = rand50 (); $x = $x < < 1 ; // x is now one // of {00 10} $x = $x ^ rand50 (); // x is now one of // {00 01 10 11} return ( $x > 0 ) ? 1 : 0 ; } // Driver code // Initialize random // number generator srand ( time ( NULL )); for ( $i = 0 ; $i < 50 ; $i ++ ) echo rand75 (); // This code is contributed // by ajit ?>
JavaScript < script > // Javascript program to print 1 with 75% probability and 0 // with 25% probability // Random Function to that returns 0 or 1 with // equal probability function rand50 () { // rand() function will generate odd or even // number with equal probability. If rand() // generates odd number the function will // return 1 else it will return 0. return Math . floor (( 10 * Math . random ())) & 1 ; } // Random Function to that returns 1 with 75% // probability and 0 with 25% probability using // Bitwise OR function rand75 () { // x is one of {0 1} let x = rand50 (); x = x < < 1 ; // x is now one of {00 10} x = x ^ rand50 (); // x is now one of {00 01 10 11} return ( x > 0 ) ? 1 : 0 ; } // Driver code for ( let i = 0 ; i < 50 ; i ++ ) { document . write ( rand75 ()); } // This code is contributed by rag2127 < /script>
산출
10110100111011011110111100101111110111100001111111
시간 복잡도: 오(1)
보조 공간: 오(1)
위의 솔루션은 다음을 생성합니다. 다른 결과 실행할 때마다.