Error: invalid multibyte character in parser at line 1
このエラーが出て詰まった。が再起動したら解決。何だったんだ。。。
Error : requires numeric/complex matrix/vector arguments
Rを触っていたら、標題のエラーが出た。エラー文の通りに問題部分を as.matrix() で変換したら解決した。
R: Convert a Data Frame to a Numeric Matrix
ネイピア数への収束を可視化
このネイピア数は、収束数列により以下のように定義される。
この収束の様子を可視化してみた。
import matplotlib.pyplot as plt def Napier(num): return (1 + 1 / num) ** num n = 1 Napier_Number = [] for i in range(100): Napier_Number.append(Napier(n)) n += 1 plt.plot(Napier_Number) plt.show
結果は以下。横軸は、 縦軸は。 = 40辺りから収束が収斂しつつあると分かる。
はてなブログのトップにカテゴリを追加
設定が必要らしい。公式ヘルプより。
help.hatenablog.com
大相撲の巴戦は最初に戦う2人が有利
9月場所で千秋楽前に豪栄道が優勝を決めました。純粋に嬉しいです。
そういえば先場所の千秋楽、巴戦が発生しそうな状況でした。巴戦は一見平等に見えて、実力が同等の場合、実は最初に戦う2人が有利です。
確率的に計算すると、最初に戦う2人が優勝する確率が5/14、残った1人は4/14です。ただ少し直感的に分かりづらい部分もあり、今回は実際に巴戦を何回も実行するプログラムを書いて実験してみました。
# -*- coding: utf-8 -*- import random import collections PLAYERS_NUM = 3 POWER = PLAYERS_NUM * [100] result = [] # 結果集計用のリスト REPEAT = 140000 # 対戦 def Battle(POWER_1, POWER_2): prob_win_1 = POWER_1 / (POWER_1 + POWER_2) prob_judge = random.random() if prob_win_1 > prob_judge: return True else: return False for i in range(REPEAT): check = True #終了判定用の変数 # 初期設定 win_count = 1 player_1 = 0 player_2 = 1 last_winner = 2 #最初に戦わないplayer reserve_player = [] for j in range(2, PLAYERS_NUM): reserve_player.append(j) while check: if Battle(POWER[player_1], POWER[player_2]): winner = player_1 loser = player_2 player_2 = reserve_player[0] else: winner = player_2 loser = player_1 player_1 = reserve_player[0] reserve_player.pop(0) reserve_player.append(loser) #終了判定 if last_winner == winner: win_count += 1 if win_count == PLAYERS_NUM - 1: check = False else: last_winner = winner win_count = 1 result.append(winner) count_dict = collections.Counter(result) for i in range(PLAYERS_NUM): print(str(i) + "の勝率:" + str(count_dict[i] / REPEAT))
実行結果は以下の通りです。乱数を使っているので、細かな値は変動します。
0の勝率:0.3558428571428571
1の勝率:0.3577571428571429
2の勝率:0.2864
0と1が最初に戦う力士です。5/14 = 0.3571... , 4/14 = 0.2857... なので、確率的な計算結果とほぼ合致しています。
はてなブログにソースコード埋め込み
公式ヘルプより引用。
はてな記法では、スーパーpre記法でプログラムのソースコードなどを表示する際に、シンタックスハイライト(Syntax highlighting、言語ごとの構文に応じた色付け表示)が利用できます。
ということでお試し。以下のような記述をする。
for i in range(1,101): if i % 15 == 0: print 'FizzBuzz' elif i % 5 == 0: print 'Buzz' elif i % 3 == 0: print 'Fizz' else: print i
おお、できてる。最初の||の間に言語名を書くと、自動で色付けしてくれる。
最初うまくいかず、ググっていたら下記記事に助けられた。記事単位で編集モードが変わるらしく、既に「見たまま」で編集中に設定を切り替えても「はてな記法」にならないとのこと。改めて記事を新規作成したら解決した。