2015年12月3日木曜日

ランダムに抽出した5人全員が末っ子である確率

とある募集に集まった人、5人全員が末っ子だった、ということがありました。
もしかしてこの「募集」は有意に末っ子を集めるようなものなのだろうか? と疑問が出たので、
統計的にどれくらいの確率になるのか調べてみることにしました。

先に結果を言うと、偶然こうなる確率は 1 % しかありませんでした。

以下、計算方法について記します。

資料は、

  第13回出生動向基本調査 結婚と出産に関する全国調査 夫婦調査の結果概要
  http://www.ipss.go.jp/ps-doukou/j/doukou13/doukou13.pdf

の4ページにある表2-2の 2005 年の調査結果を使うことにします。

末っ子は、2人以上のきょうだいに1人しかいません(一人っ子は末っ子に数えない)。
そうすると、ランダムに取り出した夫婦に末っ子がいる確率は

56.0 + 22.4 + 4.3 = 82.7 (%) = 0.827

です。これを夫婦が生涯に産む子どもの数(完結出生児数)である 2.09 で割ると、
ランダムに取り出した子どもが末っ子である確率

0.827 / 2.09 = 0.3956...

が出ます。つまり全体の約 40 %が末っ子ということです。
あとは、5回の独立試行と考えると

0.4^5 = 0.01024

なので、偶然そうなる確率は約 1 % しかないという結果になりました。

2015年11月10日火曜日

[雑感] 「なんでも良い」は本当になんでも良いわけではないことについて

昔、プリペイドカードを売るバイトをしていたときによくあったことですが、
「(XX円のカードなら絵柄は)なんでも良い」というお客さんが時々いました。

なので、言葉通りに受け取って
デザインのイマイチなカードを渡すと、文句を言う人がいます。

これはどういうことなのか、と半ば憤りながら考えていたのですが、
要は、自分の要望を言語化する能力に欠けているということなのでは、
と気付きました。

察して分かってくれる人が近くにいるから
言語化する能力が発達していないのかもしれません。
あるいは、言うのが面倒なので察してくれ、というメッセージなのでしょう。

本当になんでも良いわけではないのです。

2015年10月27日火曜日

[語学学習] Lang-8 で世界ランキング8位になるのに役立った3つのコツ



煽り気味のタイトルですが、
Lang-8 の英語学習者の中で8位になったのは本当です(上の画像を参照)。
狙って取ったというよりは、やりこんでいたら結果的にそうなっていました。

Lang-8 は、ざっくり言うと「外国語を添削し合う SNS」です。
私は英語を添削してもらい、日本語を添削しています。
詳しくは以下の実物を見てください。

    外国語を学習するならLang-8
    http://lang-8.com/

具体的な数字を挙げると、
3日間毎日3時間ずつかけて合計 77 本の日記を添削した結果、
16460 ポイントを獲得して8位になりました。

このエントリでは経過を振り返り、
結果的にポイントを稼ぐのに有効だった、
と思えるコツを3点述べます。
といっても裏ワザ的なものは使っていませんので、そういうのは期待しないでください。

なお、
「たくさん添削する」
「ポイントの倍率が高くなっている日記を添削する」
は、当たり前すぎるので予め除外します。

1. 皆が敬遠する日記に手を付ける


ポイントが高い日記は限られています。
待てば新しく追加されるでしょうけれど、
ずっと画面にかじりついてリロードし続けているのは、
いかにも効率が悪いですし、つまらないですよね。

なので、みんなが敬遠している日記、具体的には

・長文
・ぱっと見、何を言っているのか全く分からない(語順や単語が無茶苦茶)
・内容が難しい(会社や大学の志望書など)

というような日記に手をつけます。
また、Lang-8 のシステムでは、長時間添削されていない(≒みんなが敬遠している)日記に
ポイントが高く設定されるようですので、一挙両得です。

たとえば、長文の留学志望書を添削したところ、
一気に 1100 ポイントを獲得したことがあります。

2. より良い文章にならないか考える


文章に直す場所がないときは「パーフェクト」のボタンを押すのですが、
これはどうやらポイントにならないようです。

私の場合、より良い文章にならないか考え、できるだけ直すようにしていたので、
結果的にポイントが多く入ったようです。

ただしこれは、ちょっと注意が必要です。
たとえば初心者に微妙なニュアンスの修正をすると
「合ってるはずなのに何故直すの? 間違いなの?」と混乱を招くことがあるからです
(実際にありました。これはまた機会があれば紹介します)。

相手が上級者のようでも、混乱を招くかもと思った場合は
どういう意図で直したか、できるだけコメントを入れるようにしました。
たとえば「日本語としては間違いではないですが、こちらの表現のほうが自然です」という感じです。

部分的に意味が取れない場合も、直せる場所だけ直して
「◯◯の部分は意図がわからなかったので、そのままにしています」
というコメントをつける対応をしました。

良い文章に直すと、他の添削者から「Good」をもらえることが多くなり、
さらにポイントを得ることができました。

3. 辞書を引いたり、検索したりする


考えるだけではどうしても分からないこともあります。
相手が難しい日本語を使っていたり、
原語が残っているような表現に出会ったりするからです。

前者の例では、「現を抜かす」という表現が使われている際に
「現を抜かす、ってこの文脈で使って良いのだっけ?」
と確認するために国語辞典を引きました。

後者の例では、「広場」を「公園」の意味で使っていると思われるケースがあり、
文章内の固有名詞をキーワードに検索で「◯◯公園」という日本語名を確認し、
確信を得たことがあります。

さいごに


人によっては、あまり時間をかけずに簡単な文章をどんどん捌いていくことで
ポイントを得ている場合もあると思います。

しかし、Lang-8 には謙虚な添削者が
ポイントを多くもらえる仕組みが凝らされているので、
謙虚にやるほうが良いと思います。
もともと、助け合いが目的のサービスですし。

また、謙虚にやることは自分のためにもなります。
「この文章、日本語は合っているけど、どうもおかしい。しかし何がおかしいのだろう?」と考えたり、
曖昧に理解していた表現に辞書を引いたりすることで、自分の日本語も磨かれるでしょう。

2015年8月4日火曜日

[Ruby][Linux] 同名のジョブが複数走っている時、区別の手助けになるスクリプト lsrun

研究で、PC に大量のジョブを流すことがあります。
で、どのジョブが終わっている(落ちている)か、走行中かを確認することがあります。

もし、同名のジョブを複数実行している場合、top や ps では区別が付きません。
たとえば、top したときに一番右のカラムが全部 ./a.out とかになってしまいます。

バイナリの名前や引数をジョブごとに変更すれば
区別が付くようになりますが、いちいちやってられません。

で、どうするかというと、ここでは
ファイル /proc/(pid)/cwd がプロセス番号 pid のジョブが走っているディレクトリへの
シンボリックリンクになっていることを利用します。

少なくとも私の場合、同じディレクトリ内で同時並行にジョブを
走らせることはなく、実行ディレクトリのパスは必ず違うからです。

シンボリックリンクの中身を ls -l などでいちいり覗くのは面倒くさいので、
「自分が実行している」「CPU 利用率の高い」ジョブの
実行ディレクトリの一覧を出すようにしたのが以下の Ruby スクリプトです。
勝手に lsrun と名付けました。

#!/usr/bin/env ruby

# これより CPU 使用率が高いプロセスだけ表示
THRE_CPU_USAGE = 10.0
username = ENV['USER']

myprocs = `ps aux | grep #{username}`.split("\n").map{|line| line.split(" ")}

myprocs.each{|proc|
  cpu_usage = proc[2].to_f
  if cpu_usage > THRE_CPU_USAGE then
    pid = proc[1].to_s
    command = proc[10..-1].join(" ").to_s
    cwd = File.readlink("/proc/#{pid}/cwd")
#    puts [pid, cpu_usage.to_s, command, cwd].join(" ")  # 1 行で表示したいとき
    pid = sprintf("%5i", pid.to_i)
    puts [pid+" "+cpu_usage.to_s, "  "+command, "  "+cwd].join("\n")
  end
}

実行結果はこのようになります。

12345 99.9
  ./a.out
  /home/username/work/exp01
23456 99.8
  ./a.out
  /home/username/work/exp02

前から順に、pid、CPU 使用率、実行コマンド(引数がある場合はそれも含む)、実行ディレクトリ、です。

私は見やすさのためにこういう出力形式にしましたが、
1ジョブを1行で出力したい場合は
if ~ end の中にあるコメントアウトを外して、
その後ろ2行を削除してください。

2015年7月14日火曜日

[travel] プラハのプリペイド SIM で利用停止に遭った?

前回、チェコのプラハ市内の Vodafone で
プリペイド SIM を購入し、Nexus5 で動作確認するまでを行いました。

速度が良好だったので、いろいろな用途に使っていたところ、
ある日、使えなくなってしまいました。

状況をちゃんと理解していないのですが、
利用停止にされた可能性が高いです。

Vodafone から送られた SMS の内容とその訳は、
前回同様、ブログの末尾に付録として示します。

どれくらい使ったらこうなったか?


使えなくなって少し時間が経った時の
モバイルネットワーク通信の累計のグラフです。

ちなみに 1.5 GB、2 GB の警告、制限は
私が使い過ぎないようにと勝手に設定したもので、
SIM とは無関係です。


6/23 に使用開始して、
7/1 の未明に Vodafone からいくつか SMS を受け取りました。

その後、速度計測(なぜかこのときだけ数十 Mbps 出た)をしたので、
最後に跳ね上がっています。

6/23-30 の 8 日間で 1.2 GB くらいとすると、
1 日に 150 MB くらい使っていたことになります。

利用上限の規定はどうなっているのか、
この SIM の場合は分からないのですが、
別途借りていたモバイルルーターが
3 日で 400 MB 使うと利用停止にされうると聞いたので、
それ、もしくはそれに近い制限が適用されていると推測されます。

ただ、最初の方がよりたくさん使っていたのですが、何もありませんでした。
制限を越えたら必ず適用される、というわけではないのかもしれません。
月をまたいだのも関係しているかもしれません。

いつ解除されるか?


帯域制限を受けたと仮定した場合、
最初の SMS を受け取ったのが 7/1 の 0:32、
2 時間くらい後に来た SMS は
ちょうど 24 時間後の
7/2 の 2:50 に「アクティブなサービス」と言っていました。

制限は 24 時間、あるいは次の日の未明まで、
ということなのかもしれません。

私の場合は速度計測で消費したのが祟ったのか、
翌日 (7/2) になって、今度は 7/3 に解除されるという SMS を受け取り、
そのまま帰国の日になったので
解除された状態は確認していません。

Vodafone の web で状況を調べてみた


帰国してから、
先方からの帯域制限を告げる SMS の中に、
詳細についての URL http://tam.je/objednavky が書いてあったので
アクセスしてみました。

するとチェコの Vodafone のログインページ
https://muj.vodafone.cz/en/login (これは英語版)
に飛びました。

パスワードは設定した覚えはないのですが、
購入したショップの店員が SIM のケースに
何やら書いてくれていたのを
思い出して入力したら、正解でした。

ログインしたところ、こんな画面になりました。


私の理解が正しければ、
  • この電話番号は 2016 年 4 月 28 日まで有効
  • 現在、330.18 コルナチャージされている
  • 今月 (7/1-31) は現時点で 50.42 コルナ使っている
という状況のようです。

より詳しい情報を得るため、Messages from Vodafone を見てみます。
使えなくなった 7/1 に来たメッセージがあったので、
それを選択した状態のものが以下です。


"cancelled" になっていました。

当初、SMS を翻訳にかけると「キャンセルしました」と出たのですが、
これは帯域制限で、翻訳が間違っているのでは、と考えていました。
が、本当にキャンセル(利用停止)されたのでした。

結局、4 GB のデータ通信のコースは利用停止になったけど、
残っているデータの分はチャージとして残っている、ということのようです。

というのも、519 コルナ、4 GB のコースの残り通信量をコルナに換算した

    519 コルナ × (4 GB - 1.31 GB) / 4 GB ≒ 350 コルナ

が残額の 330 コルナに近いからです。

何らかのコースを契約すれば、この電話番号は使い続けられるのでしょう。

次回への教訓


そういえば、ショップの店員は、
10 GB のコースを "unlimited" って言ってたな、と思い出しました。
おそらく通信量制限なしだと言っていたのだと思います。

仕事などで本気で使いたい場合は、
高くても通信量制限なしの SIM を購入するのが無難だと思います。

付録:Vodafone から送られた SMS とその翻訳


各 SMS の着信は時間がけっこう空いていて、
それぞれ、7/1 の 0.32, 1:25, 2:50, 11:33(現地時間)に来ています。
最後の1通はそれまでの3通とは独立なのかもしれません。

Dobry den, prave jsme vam zrusili sluzbu Mobilni pripojeni 4 GB. Aktualni podminky sluzeb najdete ve sve samoobsluze. Hezky den

こんにちは、私達はちょうどサービスモバイル接続に4ギガバイトをキャンセルしましたあなたのスーパーマーケットで見つかったサービスの実態。良い一日を

Dobry den, na telefonnim cisle XXXXXXXXXXXX jsme aktualizovali nastaveni vasich sluzeb. Detailni nastaveni najdete na strance http://tam.je/objednavky , kde zaroven najdete i aktualni podminky sluzeb. Hezky den.

こんにちは、電話番号XXXXXXXXXXXX、私たちはあなたのサービスの設定を更新しました。詳細な設定は、彼はまた、サービスの実態を見つけるhttp://tam.je/objednavkyを、ご覧ください。良い一日を。

Dobry den, prave jste na cisle XXXXXXXXXXXX zahajili vyuzivani sluzby Pripojeni na den. Sluzba je aktivni do 02.07.2015 02:50. Hezky den

こんにちは、あなただけの数XXXXXXXXXXXXサービス日使用する接続で発表しました。 2015年7月2日2時50分にアクティブなサービス。良い一日を

Dobry den, na cisle XXXXXXXXXXXX byl vycerpan objem dat, a proto vam docasne snizujeme prenosovou rychlost. Hezky den

こんにちは、番号XXXXXXXXXXXXのデータの疲れボリュームだったため、一時的に伝送速度を低下させます。良い一日を

2015年7月13日月曜日

[travel] プラハでプリペイド SIM を購入、使用してみた

チェコのプラハでプリペイド SIM を購入し、
Nexus5 に入れて動作させてみました、というレポートです。

私自身、海外でプリペイド SIM を購入したのは初めてだったので
覚書も兼ねて、やや初心者向けに書くことにします。

「チェコ SIM」でググってみると何件か出てきますが、
私が参考にしたのは

    チェコのSIMカード - 改・おうちに帰るまでがコジマサトコです。

のページです。

ホテルの近所で偶然 Vodafone を見かけたので
上記のコジマさんに倣ってみました。

話はずれますが、Google Map で「Prague Vodafone」で検索すると
近所のショップを見つけることができます。
プラハ中央駅にもあるようです。

Vodafone ショップでのやりとり


Vodafone ショップでは英語が通じました。
「地球の歩き方」のチェコの本(正確にはスロバキア・ポーランドとの合本)には、
観光地、若い人は英語が通じる、と書いてあり、実際にそうでした。
他の店でも "Do you speak English?" と尋ねても驚かれることなく、
「ああ、はいはい」という感じで英語を話してくれました。

以下、店員と会話した内容(和訳)はこんな感じです。

「何をお求めですか?」
「プリペイド SIM カードください」

「SIM カードのサイズは?」
「microSIM です」

「インターネットのみ? それとも電話も使いますか?」
「インターネットのみです」

ここで店員は、カウンターに座るよう言って奥に消えました。
現物を探しに行ったようです。

プリペイド SIM を手にした店員がやってきて、説明を始めました。
最初、special offer と言って 10 GB コースを勧めてきたのですが、
そんなに必要ないか、と思って断りました。

後から思えば、素直にこれを買っておけば良かったのでした。
unlimited としか聞き取れなかったのですが、
10 GB のみ、1日の通信量制限がないようなのです。
これについては、詳しくは次回に書くことにします。

ちなみに料金は上記のコジマさんの場合 (2014 年 9 月) と同じだったと思います。
10 GB で 999 コルナ(約 5000 円)、
4 GB で 519 コルナ(約 2600 円)
であったことは覚えています。

私は 4 GB を選びました。

現金かクレジットカードか聞かれるので、
クレジットカード払いにしました。

最後に、SIM の PIN code を教えてくれました。
これはスマホの起動時に毎回聞かれるので覚えておく必要があります。
聞かれないようにする方法もあるのかもしれませんが、
旅行中だけのことなので結局調べませんでした。

SIM カードの交換


SIM カードを交換します。
Nexus5 の場合、SIM カードの交換には細長い棒が必要ですが、
私はいつもクリップの先でやっています。
これだと専用ツールに比べて入手が比較的容易なので、
なくしてもダメージが少なくて済みます。

スマホの動作確認


起動して PIN code を打ち込み、
うまく電波が拾えれば、
モバイルネットワークは "Vodafone CZ" になります。


電波が入らない場合は、モバイルネットワークがオフになっていないか確認してみましょう。
既存の SIM で海外ローミングしないために、空港でオフにしたりしていませんか?

また、以下のような SMS が届いていると思います。


大したことは書いていないのですが、
気になる人もいると思うので、ブログの末尾に付録として
コピペしたテキストと Google 翻訳で訳したものを貼っておきます。

通信速度


場所によりますが、速い場所では日本と大して差は感じませんでした。
下りで数十 Mbps は出ています。

4G 環境で、通信速度計測アプリで測った結果が以下のとおりです。


また、3G 環境でもこれくらい出ていました。


速い場所では速いのですが、
日本みたいにくまなく高速通信ができるわけではありませんでした、

具体的には地下鉄や市街西側の丘のところでは
2G (アンテナマークに E と表示される)しか入らないところもありました。
速度は測っていませんが、写真を送るのはほとんど不可能で、
テキストでのやりとりならなんとかなる、という環境です。

とはいえ、市街地の地上では困ることはなかったので、
地図を見たり、テザリングして PC でネット閲覧、
といった用途にガンガン使いました。

が、調子に乗りすぎて、ある日帯域制限を食らってしまいました。
これについては次回をご覧ください。

付録:開通時に Vodfone から来た SMS の内容


SMS をコピペしたテキストと、それを Google 翻訳で訳したものを貼っておきます。
"XXXXXXXXXXXX" は 12 桁の電話番号です。

Dobry den, pokryti CR nasim Turbo Internetem se zvetsuje kazdym dnem, chcete si rychla data take uzit? Vymente si zdarma SIMku za novou na prodejne nebo pres muj.vodafone.cz v sekci Nastaveni sluzeb. Mapu pokryti Turbo Internetu a dalsi informace najdete na www.vodafone.cz/turbo. (OS zruste na *77)

こんにちは、インターネットのわれわれの記事へターボは毎日増加している、あなたはまた、高速なデータを楽しむことができますか?店でまたはmuj.vodafone.czセクションサービスの設定を介して、新しいのためのあなたの自由なSimkoを交換してください。ターボインターネットカバレッジマップと詳細は、www.vodafone.cz/turboください。 (77 *にキャンセルOS)

Dobry den, vitejte v nasi siti. Prave vam na telefonnim cisle XXXXXXXXXXXX nastavujeme pozadovane sluzby. Jakmile vse dokoncime, posleme vam potvrzovaci SMS zpravu. Dekujeme za duveru.

こんにちは、私たちのネットワークへようこそ。ちょうどあなたのために呼び出すことにより、XXXXXXXXXXXXは、必要なサービスを設定します。すべてが完了すると、私たちはあなたに確認のSMSを送信します。あなたの自信をありがとうございました。

Dobry den, na telefonnim cisle XXXXXXXXXXXX jsme aktualizovali nastaveni vasich sluzeb. Detailni nastaveni najdete na strance http://tam.je/objednavky , kde zaroven najdete i aktualni podminky sluzeb. Hezky den.

こんにちは、電話番号XXXXXXXXXXXX、私たちはあなたのサービスの設定を更新しました。詳細な設定は、彼はまた、サービスの実態を見つけるhttp://tam.je/objednavkyを、ご覧ください。良い一日を。

2015年6月17日水曜日

[Ruby]ドットひとつで結果が変わってしまう例

嵌ったのでメモしておきます。
Ruby 1.9.3 で動作確認しています。

1-2+3 を計算したいとします。

普通に計算させるとこうなります。

    > p 1-2+3
    2

ところが、(何かの拍子に)1 のうしろにドットを入れてしまうとこうなります。

    > p 1.-2+3   # 1-2+3 または 1.0-2+3 を計算しているつもり
    -4             # 予想外

これは、ドットの直後の "-" が数学の演算子ではなくメソッドと解釈されたので、
後ろの演算が先に評価され、1-(2+3) の結果が返ってきたのだと思います。
もう少し分かりやすく書くとこうなります。

    1.minus(2+3)

ここで minus は a.minus(b) において a-b の結果を返すメソッドを表します。

ちなみに、ドットのうしろに 0 を入れると "1.0" が実数と解釈されるので

    > p 1.0-2+3
    2.0

となります。