2018年5月26日土曜日

ロト6は攻略できるか

 気になってロト6の当選番号を過去1284回分調べてみた。たかだか1284回だから手法としては完璧ではないが試しに各桁の数字の出現回数及び値毎の出現回数の合計値をグラフにすると次のようになる。1番目と6番目の数字はそれぞれ1と43の出現確率が最大になっているように見えるが合計値で見ると個々の数字の出現確率に大きな差は無い。理論値は1/43×6×1284=179回である。
 なお各折れ線のピークを繋げた数は1、10、21、28、35、43である。また出現回数の多い数字は多い順に27、6、38、12、37、20、23、39である。

 グラフがガタガタで真の姿が見えにくいので簡単なプログラムを作って100万回試行してみた(この程度の計算なら私のCore2Duoマシンでも1秒以内で終わる)。
この分布はこれまでのロト6の傾向を裏付けており、各数字の出現回数は1/43×6×100万=14万回あり確率は一定である。一方各桁での出現数にはピークがありの最大値はそれぞれ1、9、18、26、35、43である。

 43個の数字の中から6つを取り出す組み合わせの数43C6は6096454通りあり、1等の当選確率はその逆数であるから数字1組あたり1.64×10^(-7)である。2等はその6倍、3等は6C5/(43C5) = 3.7×10^(-5)、4等は6C4/43C4=1.2×10^(-4)、5等は6C3/43C3 = 1.6×10^(-3)である、たぶん。組み合わせの中では4,5,6,9,10,11と極端に偏った数字が出たこともある(第301回)。

 試しに隣同士の間隔がどれくらいか調べてみた。6つの数字の外側には0と44を置いている。
どこかにピークがあると思っていたがこれを見ると単純減少、隣り合った数字どうしの差は少ない場合が多い。逆に言えば等間隔に割り振られているというよりバラバラな感がある。つまりいくつかの隣接した数字のグループとそれらの間の大きなギャップで構成されているのだろう。シミュレーションしてみると7本の線が1本に重なって見えるのがこれを裏付けている(図は省略)。
 では、ある数が出たとき次回に出た数はどうなっているのか、桁ごとに遷移値をカウントしてみた。1桁目と6桁目は同じ数や隣接する数が出る確率が高かった。
これをシミュレーションしたら次のようになった(線が3本に見えるのは同じカーブが2本ずつ重なっているから)。
 やはり1桁目と6桁目は前回と同じ数が出る確率が高い。そしてそれは1と43、あるいはその近傍。これは何を意味するのか?

 統計的に偏りは無いと分かっていても何らかの手掛かりが欲しいのが人情である。これからもう少し考えてみよう。

 ところでロト6とロト7とあるが、どちらに挑戦すべきなのか? 場合の数は、
  ロト6:43^6 =  6,321,363,049
  ロト7:37^7 = 94,931,877,133
となり10倍以上ロト6の方が確率が高い。やはり私はロト6を買うぞ。

その2に続く

2018年5月24日木曜日

April 2018 Update 千日手

 仕事で管理しているWindows10 1607(Anniversary Update)のサポート期限が4月で切れた。切れる前に1703(Creators Update)か 1709(Fall Creators Update)に更新したかったのだが、これらには新規登録ユーザのスタートメニューが正常に作成されない不具合が出て更新を延期してきた。しかし1607のサポート切れでもう限界だ。
 4月から来るべき1803(April 2018 Update)の発表を待っていたが、5月にずれ込んだ。そして5月9日頃発表になり自宅のPC(複数)にはすんなりインストールでき何も問題はなかった。

 よしこれなら行ける、と思ったのは言うまでもない。早速いくつかのPCにインストールを試みた。

 作業は順調に進んだかに見えた。何回か再起動の後「更新プログラムを構成しています」が55%位まで進んだ辺りで突然「以前のバージョンのWindowsを復元しています」ときた。



 これで数時間が無駄になった。ネットで情報を検索したり、ひょっとしたらセキュリティソフトが悪さしているのかとアンインストールしてみても駄目。ドライバーを最新版に更新しても駄目。ネット情報を頼りにsfcやDISM等での修復を含め色々試すが全くダメ。あちこちのPCで20回ほど挑戦したと思うが毎日長時間同じことを繰り返すばかりで、ドツボにはまってしまった。

 そしてネットで調べると5月18日に更新プログラムKB4103720が発表されていたのを発見。そしてその中身に「更新プログラムが適用されたときに BitLocker が回復モードに切り替わる問題を修正します。 」が密かに潜り込ませてある。要するにインストール中に勝手に復元(回復)スイッチが入ってしまう不具合があったんだ。それならこれまでの現象が理解できる。しかもマイクロソフトはこれを知らん顔して修正したんだ。何てこったい。俺の貴重な時間を返せとマイクロソフトに言いたい。ん十万の損害賠償を求めたいくらいだ。
  ダウンロードしてみるとKB4103720の大きさは1.3GBほどある。そしてその前にKB4132216もインストールしておく必要もある。ややこしい。そしてKB4103720をインストールしても「復元(回復)」され失敗してしまう。
 でも、それを無視して1803をインストールするとあ~ら不思議、旧バージョンに復元されることもなく1803になってしまった。メデタシメデタシ。

 だがこれで終わりではない。よく使う「電卓」が無くなっている。 ストアから調達する手もあるだろうが仕事で使うPCにストアへのアクセスは許可できない。試しにDOS窓でcalcと叩いてみると以前のように電卓を起動できるから単にメニューから消されただけ。それなら復活できる・・・。


2018年5月15日火曜日

自作クローニングケーブルにダイオードが必要な理由

 自作クローニングケーブルを紹介しているBLOG等をいくつか見かけますが、内容に怪しい点があるものがあるので、改めて基本的な考え方を説明します。

 次図はネットで拾ったIC-R6の回路図のCI-Vインターフェイス部分です。CI-Vは1対1のインターフェイスではなく初期のイーサネット(10BASE5)で使われたような多重アクセス/衝突検出(MA/CD)的な考え方で作られており、1本の信号線を共有して数台を並列に接続できるように考えられています。各装置はランダムに送信を行います。当然起こる信号の衝突はソフト的に検出・再送することで解決するように考えられています。
 次図ではCI-V信号はQ503(E-B間)や抵抗(R504)を通じてH(3.3V)にプルアップされているとともに、TXD信号でトランジスタスイッチ(Q504)をONにすることでL(0V)に落とすようになっています。並列に接続された複数台の何れかの1台がLの信号を出せばCI-Vの信号はLになる、いわゆるWired-ORという初期PCのバスに使われていた接続法で、この回路のCI-V信号を並列に何台繋いでも電気的に問題は起きません。

一方、FT232RLなどの一般的なシリアルインターフェイスICの出力(TXD)は次図のQ1とQ2(何れもFET)のように構成され、Q1でH側、Q2でL側に引っ張るようにできています。もちろんQ1とQ2は同時にONにはならず、信号によってどちらかがON、他方がOFFになりHまたはLが出力されます。この回路は並列接続を行うようには考えられていません。
 これとIC-R6とを直接接続したのが次の回路図です。
  IC-R6とクローニングケーブルはそれぞれ独立に信号を出すので、各々がHかLを出すとすれば4通りの組み合わせが考えられます。そのなかで問題になるのはIC-R6がL、クローニングケーブルがHの信号を出そうとするときで、赤点線で示したようにQ1,Q504で構成される電源~接地を直結するルートが構成され過大な電流が流れる可能性があります。この時CI-Vの信号(電圧)は不安定な状態になります。
 私の使っているFT234Xの場合Q1,Q2はFETでドライブ能力は十数mA程度ですがQ504の2SC4738は100mA以上電流が流せるので相対的にQ504が強く、このままでも見かけ上動くかもしれません。一方Q1のドライブ能力が高いICを使うとLでもCI-Vの電圧が十分下がりきらずエラーが多発したり通信できないかもしれません。
   これを防ぐために、次図のようにダイオード(D1)を入れてQ1-Q504の直結ルートを防ぎWired-OR接続に変えます。つまり実質的にQ1が機能しないようにするわけです。またQ2がON時にCI-V信号のLの電圧を低く抑えるためD1には順方向電圧降下の少ないショットキーバリヤーダイオードを使うのが望ましいです。このときQ1の代わりにR1を入れてCI-Vをプルアップしノイズマージンを稼ぎます(無くても動く場合が多いでしょう)。

 
  
このようにすることでCI-Vインターフェイスを正常に機能させることが出来ます。またIC-R6の並列接続にも耐えられるようになります。もし クローニングケーブルを自作したけどエラーが多発する場合や上手く機能しない場合はD1、R1を入れてみてください。
 なおクローニングケーブル側に用いられる電圧ですが、USBからは5Vが供給されますが、RS-232Cに使われる電圧は5Vの場合と3.3Vあるいはその他の電圧が設定できる場合もあります(以前は標準的な5Vがそのまま用いられていましたが現在は3.3Vの場合が多いようです)。一方インターフェイスICのRXDの閾値はC-MOSのように電源電圧の半分の場合とTTLのように1.5V位の場合があります。汎用性という意味では3.3Vであれば両方に対応できます。私の使っているFT232xやFT234XではUSBから供給される5VをIC内部で3.3Vに落として使っているとうです。この場合は出力がC-MOSコンパチ、入力がTTLコンパチでノイズマージンが大きくなります。


 そこで1つ気になるのはR1のプルアップに5Vしか取れない場合でインターフェイスICのRS-232c電源に内部で生成した+3.3Vを使っている場合です。この場合CI-VがHの状態ではQ1には逆方向に電圧がかかることになります。私は自己責任でこのままの状態で使っていますし秋月のFT234Xの基板にはI/O=3.3V(5V tolerant)と書いてありますので問題ないと思います。気になる方はR1に直列に2~3個のシリコンダイオードを入れて電圧を落としてください。あるいはR1は無くても動くかもしれません。