段々と人間っぽくなってく運命ですが、アンナはむしろコゼットが遠くに行ってしまう感じがしてしまって、それでいっしょに行動する頻度が減っていたのですね。
タクトについての話は結構山場となりましたが、この世界の秘密についてはあまり語られていない状況で、これ1クールで終わるのかなぁ。
今期、そういうのが多いよなぁ。
RIOT MUSIC の 道明寺ここあ のカヴァー。
シンフォギアの曲みたいです。
この人シンフォギア好きだよなぁ。ロボット物とかヒーロー物とかそういうのの曲のカヴァーも多いし。
獅子神レオナのカヴァー。
「みんな社会不適合」って、なんて曲だ。
まぁ、そういう曲多いですよね。
VESPERBELL の ヨミ によるカヴァー。
艦これのOP海色ですね。
こういうかっこいい歌を歌わせるとピカ一なのでした。
ものすごく単純な話ですが、乱数を使って円周率を概算することができます。
1辺が1の正方形に内接する円は半径0.5となるので、その面積は $S=\pi r^2 = 0.25\times\pi$ となります。
正方形の中に一様な乱数 $N$ 個を発生させると、正方形と円の面積の比が $1:0.25\pi$ になることから、円の中に入る点の数 $n$ は $1:0.25\pi = N:n$ となることから $\pi= n/N/0.25$ になります。
実際には円周率は無理数だから整数の割り算では得られないし、計算機の乱数は本当の乱数ではないので、現実の円周率の値にはならないですが、概算値ぐらいは出るはずです。
乱数の生成器として、よく知られている乱雑さの大きい手法であるメルセンヌツイスターを使った場合の例を考えてみましょう。
#include <random>
#include <cmath>
#include <stdio.h>
int main(){
std::random_device rnd;
std::mt19937_64 mt(rnd());
std::uniform_real_distribution<> rand(0.0,1.0);
long long int count=0;
long long int total=10000000000;
for(long long int i=0;i<total;i++){
double x=rand(mt)-0.5;
double y=rand(mt)-0.5;
if(sqrt(x*x+y*y)<=0.5){
count++;
}
}
double c=(double)count;
double ttl=(double)total;
double pi=c/ttl*4.0;
printf("%22.14f\n",pi);
}
コンパイルして実行してみます。
$ g++ pi.cpp
$ time ./a.exe
3.14158514000000
real 10m52.218s
user 0m0.000s
sys 0m0.016s
12世代のcore i7 ですがさすがに10分も計算がかかっていますが、それでもそんなに精度が良くなさそうですね ^^;;
円周率の計算方法としては効率が良くないし、しかも精度が無いので、まぁ、モンテカルロの練習課題ぐらいにしかならないんですよねぇ………。
変数の型として適切なものを使ってないというのもあるとは思いますけどね。
Fortran版のメルセンヌツイスターを使ってみようと思ったのですがうまくコンパイルできなかった。