Probability of a random pair being the maximum weighted pair (original) (raw)

Last Updated : 27 Jul, 2022

Given two arrays A and B, a random pair is picked having an element from array A and another from array B. Output the probability of the pair being maximum weighted.

Examples:

Input : A[] = 1 2 3 B[] = 1 3 3 Output : 0.222 Explanation : Possible pairs are : {1, 1}, {1, 3}, {1, 3}, {2, 1}, {2, 3}, {2, 3}, {3, 1}, {3, 3}, {3, 3} i.e. 9. The pair with maximum weight is {3, 3} with frequency 2. So, the probability of random pair being maximum is 2/9 = 0.2222.

Below is the implementation:

C++ `

#include <bits/stdc++.h> using namespace std;

// Function to return probability double probability(int a[], int b[], int size1, int size2) { // Count occurrences of maximum element // in A[] int max1 = INT_MIN, count1 = 0; for (int i = 0; i < size1; i++) { if (a[i] > max1) { max1 = a[i]; count1 = 1; } else if (a[i] == max1) { count1++; } }

// Count occurrences of maximum element 
// in B[]
int max2 = INT_MIN, count2 = 0;
for (int i = 0; i < size2; i++) {
    if (b[i] > max2) {
        max2 = b[i];
        count2 = 1;
    }
    else if (b[i] == max2) {
        count2++;
    }
}

// Returning probability
return (double)(count1 * count2) / 
              (size1 * size2);

}

// Driver code int main() { int a[] = { 1, 2, 3 }; int b[] = { 1, 3, 3 };

int size1 = sizeof(a) / sizeof(a[0]);
int size2 = sizeof(b) / sizeof(b[0]);

cout << probability(a, b, size1, size2);
return 0;

}

Java

// Java program to find Probability // of a random pair being the maximum // weighted pair import java.io.*;

class GFG {

// Function to return probability
static double probability(int a[], int b[], 
                        int size1,int size2)
{
    // Count occurrences of maximum 
    // element in A[]
    int max1 = Integer.MIN_VALUE,  count1 = 0;
    for (int i = 0; i < size1; i++) {
        if (a[i] > max1) {
            max1 = a[i];
            count1 = 1;
        }
        else if (a[i] == max1) {
            count1++;
        }
    }
 
    // Count occurrences of maximum 
    // element in B[]
    int max2 = Integer.MIN_VALUE, count2 = 0;
    for (int i = 0; i < size2; i++) {
        if (b[i] > max2) {
            max2 = b[i];
            count2 = 1;
        }
        else if (b[i] == max2) {
            count2++;
        }
    }
 
    // Returning probability
    return (double)(count1 * count2) / (size1 * size2);
}
 
// Driver code
public static void main(String args[])
{
    int a[] = { 1, 2, 3 };
    int b[] = { 1, 3, 3 };
 
    int size1 = a.length;
    int size2 = b.length;
 
    System.out.println(probability(a, b, 
                        size1, size2));
}

}

/This code is contributed by Nikita Tiwari./

Python3

import sys

Function to return probability

def probability(a, b, size1, size2):

# Count occurrences of maximum
# element in A[] 
max1 = -(sys.maxsize - 1)
count1 = 0
for i in range(size1):
    if a[i] > max1:
        count1 = 1
    elif a[i] == max1:
        count1 += 1

# Count occurrences of maximum 
# element in B[] 
max2 = -(sys.maxsize - 1)
count2 = 0
for i in range(size2):
    if b[i] > max2:
        max2 = b[i]
        count2 = 1
    elif b[i] == max2:
        count2 += 1

# Returning probability 
return round((count1 * count2) / 
             (size1 * size2), 6)

Driver code

a = [1, 2, 3] b = [1, 3, 3] size1 = len(a) size2 = len(b) print(probability(a, b, size1, size2))

This code is contributed

by Shrikant13

C#

// C# program to find Probability of a random // pair being the maximum weighted pair using System;

class GFG {

// Function to return probability
static float probability(int []a, int []b, 
                      int size1,int size2)
{
    
    // Count occurrences of maximum 
    // element in A[]
    int max1 = int.MinValue, count1 = 0;
    
    for (int i = 0; i < size1; i++) {
        if (a[i] > max1) {
            max1 = a[i];
            count1 = 1;
        }
        else if (a[i] == max1) {
            count1++;
        }
    }

    // Count occurrences of maximum 
    // element in B[]
    int max2 = int.MinValue, count2 = 0;
    
    for (int i = 0; i < size2; i++) {
        if (b[i] > max2) {
            max2 = b[i];
            count2 = 1;
        }
        else if (b[i] == max2) {
            count2++;
        }
    }

    // Returning probability
    return (float)(count1 * count2) / 
                        (size1 * size2);
}

// Driver code
public static void Main()
{
    int []a = { 1, 2, 3 };
    int []b = { 1, 3, 3 };

    int size1 = a.Length;
    int size2 = b.Length;

    Console.WriteLine(probability(a, b, 
                        size1, size2));
}

}

/* This code is contributed by vt_m.*/

PHP

size1,size1, size1,size2) { // Count occurrences of maximum // element in A[] max1=PHPINTMIN;max1 = PHP_INT_MIN; max1=PHPINTMIN;count1 = 0; for ($i = 0; i<i < i<size1; $i++) { if ($a[$i] > $max1) { max1=max1 = max1=a[$i]; $count1 = 1; } else if ($a[$i] == $max1) { $count1++; } } // Count occurrences of maximum // element in B[] max2=PHPINTMIN;max2 = PHP_INT_MIN; max2=PHPINTMIN;count2 = 0; for ($i = 0; i<i < i<size2; $i++) { if ($b[$i] > $max2) { max2=max2 = max2=b[$i]; $count2 = 1; } else if ($b[$i] == $max2) { $count2++; } } // Returning probability return (double)($count1 * $count2) / ($size1 * $size2); } // Driver code $a = array(1, 2, 3); $b = array(1, 3, 3); size1=sizeof(size1 = sizeof(size1=sizeof(a); size2=sizeof(size2 = sizeof(size2=sizeof(b); echo probability($a, $b, size1,size1, size1,size2); // This code is contributed by ajit ?>

JavaScript

`

Time Complexity: O(n).
Auxiliary Space: O(1).