Computer >> Máy Tính >  >> Lập trình >> C ++

Xác suất một cặp ngẫu nhiên là cặp có trọng số lớn nhất trong C ++

Được đưa ra với hai mảng khác nhau và nhiệm vụ là tìm xác suất của cặp ngẫu nhiên được chọn là cặp có trọng số lớn nhất.

Một Cặp sẽ chứa một phần tử từ giả sử array1 và một phần tử khác tạo thành một mảng khác, giả sử array2. Vì vậy chương trình phải tìm xác suất để cặp chứa phần tử đầu tiên là phần tử lớn nhất của mảng 1 và phần tử thứ hai là phần tử lớn nhất của mảng 2 để tạo thành cặp có trọng số lớn nhất.

Đầu vào

arr1[] = { 2, 23 }
arr2[] = { 10, 3, 8 }

Đầu ra

probability of maximum pair : 0.166667

Giải thích

set of pairs from both the arrays are -: {(2, 10), (2, 3), (2, 8), (23, 10), (23, 3), (23, 8)}
Maximum weighted pair from the given set is: (23, 8)
Probability is : 1 / 6 = 0.166667

Đầu vào -

arr1[] = { 4, 5, 6 }
arr2[] = { 6, 2, 6 }

Đầu ra -

probability of maximum pair : 0.222222

Giải thích

set of pairs from both the arrays are -: {(4, 6), (4, 2), (4, 6), (5, 6), (5, 2), (5, 6), (6, 6), (6, 2), (6, 6)}
Maximum weighted pair from the given set is (6, 6) which is occurring twice.
Probability is : 2 / 9 = 0.2222

Phương pháp tiếp cận

  • Nhập các phần tử mảng

  • Tìm các phần tử lớn nhất từ ​​cả hai mảng và tính tổng số các cặp có trọng số lớn nhất được tạo thành

  • Tính xác suất bằng cách chia tổng số cặp có trọng số lớn nhất cho tổng số cặp trong tập

  • In xác suất được tính toán

Thuật toán

Start
Step1→ declare function to calculate maximum weighted pair
   double max_pair(int arr1[], int arr2[], int size_1, int size_2)
      declare int max_pair1 = INT_MIN, count_1 = 0
      Loop For int i = 0 and i < size_1 and i++
      IF arr1[i] > max_pair1
         Set max_pair1 = arr1[i]
         Set count_1 = 1
      End
      Else IF arr1[i] = max_pair1
         Set count_1++
      End
   End
   Declare int max_pair2 = INT_MIN, count_2 = 0
   Loop For int i = 0 and i < size_2 and i++
      IF arr2[i] > max_pair2
         Set max_pair2 = arr2[i]
         Set count_2 = 1
      End
      Else IFarr2[i] = max_pair2
         Set count_2++
      End
   End
   return (double)(count_1 * count_2) / (size_1 * size_2)
Step 2→ In main()
   Declare int arr1[] = { 2, 23 }
   Declare int arr2[] = { 10, 3, 8 }
   Calculate int size_1 = sizeof(arr1) / sizeof(arr1[0])
   Calculate int size_2 = sizeof(arr2) / sizeof(arr2[0])
   Call max_pair(arr1, arr2, size_1, size_2)
Stop

Ví dụ

#include <bits/stdc++.h>
using namespace std;
// Function to return probability
double max_pair(int arr1[], int arr2[], int size_1, int size_2){
   //pair from array 1
   int max_pair1 = INT_MIN, count_1 = 0;
   for (int i = 0; i < size_1; i++){
      if (arr1[i] > max_pair1){
         max_pair1 = arr1[i];
         count_1 = 1;
      }
      else if (arr1[i] == max_pair1){
         count_1++;
      }
   }
   //pair from array 2
   int max_pair2 = INT_MIN, count_2 = 0;
   for (int i = 0; i < size_2; i++){
      if (arr2[i] > max_pair2){
         max_pair2 = arr2[i];
         count_2 = 1;
      }
      else if (arr2[i] == max_pair2){
         count_2++;
      }
   }
   return (double)(count_1 * count_2) / (size_1 * size_2);
}
int main(){
   int arr1[] = { 2, 23 };
   int arr2[] = { 10, 3, 8 };
   int size_1 = sizeof(arr1) / sizeof(arr1[0]);
   int size_2 = sizeof(arr2) / sizeof(arr2[0]);
   cout <<"probability of maximum pair in both the arrays are "<<max_pair(arr1, arr2, size_1, size_2);
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

probability of maximum pair in both the arrays are 0.166667