logo

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

다음은 위의 아이디어를 구현한 것입니다.

URI 대 URL
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



Java에서 csv 파일 읽기
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)

위의 솔루션은 다음을 생성합니다. 다른 결과 실행할 때마다.