シード期スタートアップエンジニアの技術ブログ

仕事で得た知見や勉強した技術を書きます。

問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本で知ったことをざっくりまとめてみた (part 3)

確率を実数で表す

確率は%を使って表すことが多いですが、通常は0以上1以下の実数で表します。

期待値とは

期待値とは、1回の試行で得られる平均的な値のことです。 (ある事象が起こる確率) * (ある事象が起こることで得られる値)を全て足すと、期待値を得ることができます。(ある事象が起こることで得られる値のことを確率変数と言います。)

確率変数とは

確率変数とは、ある値になる確率が決まっている全ての値のことです。 例えば、サイコロを1回投げる試行の場合、1 ~ 6がそれぞれ1 / 6の確率で出るので、確率変数は1 ~ 6の全ての値のことです。コインを1回投げて表だったら1、裏だったら0を得られる試行の場合、表か裏が1 / 2の確率で出るので、確率変数は 0 ~ 1の全ての値です。

確率分布とは

確率分布とは、「確率変数がとる値とその値のときの確率の対応の様子」のことです。試行を増やせば増やすほど、ばらつきの度合いが小さくなっていきます。

試行とは

試行とは、同じ条件で何度も繰り返すことができ、その結果が偶然によって決まる実験のことです。

試行の例) サイコロを投げる

事象とは

事象とは、試行の結果起こる事柄のことです。

事象の例) 1の目が出る

期待値の線形性

ある試行の結果をX、Yとすると、X + Yの期待値はXの期待値とYの期待値の和である。(X, Yは確率変数)

小数とは

小数とは、整数部と小数点と小数部とからなる数の表し方です。

割り算の結果を小数にしたい時

2つの整数の割り算結果を小数にしたい場合、1.0をどちらかの数にかければ良いです。1.0をかけた整数は小数になるので、小数と整数の割り算になります。その結果、計算結果が小数になります。

小数部の桁数を指定して値を出力したい時

小数部の桁数を指定して値を出力したい場合、coutの中でfixedとsetprecisionを使います。setprecisionには小数部の桁数を指定します。

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
  double y;
  y = 1.0 / 3.0;

  //普通にcout
  cout << y << endl; // => 0.333333

  //小数部を15桁に指定
  cout << fixed << setprecision(15) << y << endl; // => 0.333333333333333

  return 0;
}

乱数とは

乱数とは、何が出るかわからないランダムな数のことです。 乱数とは、ランダムな一つの数のことです。

C++で乱数を使うためには、rand関数を使います。 rand関数、0からRAND_MAXの範囲の整数を返します。 randを100で割ると、0から99の範囲の乱数を得ることができます。

int v1 = rand % 100;       // 0 - 99 の範囲で乱数が生成される。

参考記事

小数(しょうすう)

c++ 浮動小数点数 表示方法 - Qiita

確率変数についてまとめてみた /データ分析の解説: haku1569 Excel でらくらく データ分析!

試行と事象 | 数学A | フリー教材開発コミュニティ FTEXT

「絶対・相対誤差10^(-n)以下であれば正答とみなされる」の意味 - Java初心者の競技プログラミング日記

11-1. 確率変数と確率分布 | 統計学の時間 | 統計WEB