C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での誕生日のパラドックス


誕生日のパラドックスは、確率のセクションで非常に有名な問題です。この問題の問題の説明は、

と記載されています。

誕生日パーティーには何人かがいて、同じ誕生日の衝突をしている人もいます。おおよその数を見つける必要があります。同じ誕生日に基づいて誕生日パーティーに参加する人の数。

コインを持っている場合と同じように、先に進む可能性が1/2であることがわかっている確率では、10個のヘッドを獲得する可能性は1/100または0.001です。

コンセプトを理解しましょう

2人の誕生日が異なる可能性は

うるう年ではない場合は1-1/365である364/365。

したがって、特定の誕生日の確率を持つ最初の人は「1」であり、他の人にとっては異なると言えます。

P(異なる)=1×(1-1 / 365)×(1-2 / 365)×(1-3 / 365)×(1-4 / 365).......

したがって、P(同じ)=1-P(異なる)

たとえば、

確率が0.70である同じ誕生日の人の数。

N =√2×365×log(1-1 / p)。

N =√2×365×log(1-1 / 0.70)=30

したがって、合計の概算はありません。同じ誕生日の人の割合は30人です。

#include<bits/stdc++.h>
using namespace std;
int findPeople(double p){
   return ceil(sqrt(2*365*log(1/(1-p))));
}
int main(){
   printf("%d",findPeople(0.70));
}

出力

30

  1. 最大ベンド数のC++パス長

    二分木が与えられる問題を解決するため。次に、曲がりの数が最大のパスを見つける必要があります。つまり、パスの方向が左から右に、またはその逆に変化する場合、たとえば、曲がりが考慮されます 入力- 出力- 6 このアプローチでは、ツリーをトラバースして、以前の動きを追跡します。方向が変わった場合は、曲げカウントを更新するだけで、最大値が見つかります。 解決策を見つけるためのアプローチ このアプローチでは、すべてのパスをトラバースし、回答を更新するベンドの最大数を見つけます。 例 #include <bits/stdc++.h> using namespace std; s

  2. C++でKの葉を持つ二分木のすべてのノードを印刷します

    この問題では、二分木と整数Kが与えられ、子サブツリーにKの葉を持つ二分木のすべてのノードを出力する必要があります。 二分木 は、各ノードに最大2つのノード(1つまたは2つ/なし)を持つ特別なツリーです。 リーフノード 二分木のは、ツリーの最後にあるノードです。 問題を理解するために例を見てみましょう- K =2 出力- {S} この問題を解決するために、ツリーのトラバーサル(ポストオーダー)を実行します。ここで、葉の合計がKの場合、左側のサブツリーと右側のサブツリーがそれぞれ表示されます。現在のノードを出力します。 それ以外の場合は再帰的に呼び出し、サブツリーの葉がカ