Photoshopの文字ツールから抜けたいときEnterじゃ改行になってしまうしツールを切り替えるのも面倒だ
「Ctrl + Enter」で文字ツールのまま文字ツールを抜けられるぞ!
投稿者「後藤 祐一」のアーカイブ
モンティ・ホール問題をプログラムで結果だけ出す
ここではモンティ・ホール問題をプログラムによって結果だけ出そうと思う。

モンティ・ホール問題 – Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C
PHPが動かない方のためのデモ
https://office-goto.info/demo/monty-hall-problem/index.php
※F5アタックでボクのサーバーを落とさないでくれよ!
ソース
<?php
$totalWin = 0;
$totalLoose = 0;
$doorFlg = 0;
for ($i = 0; $i < 100; $i++) {
$jackpot = rand(0,2);
$select = rand(0,2);
$openLoose = getOpenLoose($select, $jackpot);
// 選び直さない
if ($doorFlg == 0) {
if ($select == $jackpot) {
$totalWin++;
}
else {
$totalLoose++;
}
if ($i == 99) {
$doorFlg = 1;
$i = 0;
echo "ドアを選びなおさなかった場合<br>";
echo "Win:{$totalWin}<br>";
echo "Loose:{$totalLoose}<br><br>";
$totalWin = 0;
$totalLoose = 0;
}
}
// 選び直す
if ($doorFlg == 1) {
$array = array(0,1,2);
unset($array[$select]);
unset($array[$openLoose]);
$array = array_values($array);
if ($array[0] == $jackpot) {
$totalWin++;
}
else {
$totalLoose++;
}
if ($i == 99) {
echo "ドアを選びなおした場合<br>";
echo "Win:{$totalWin}<br>";
echo "Loose:{$totalLoose}<br>";
exit;
}
}
} // endfor
function getOpenLoose($select, $jackpot) {
$arrLoose = array(0,1,2);
unset($arrLoose[$jackpot]);
unset($arrLoose[$select]);
$arrLoose = array_values($arrLoose);
if ($select == $jackpot) {
$rand = rand(0,1);
return $arrLoose[$rand];
}
else {
return $arrLoose[0];
}
}
プログラム解説と結論
100回ドアを選びなおさなかった場合とドアを選びなおした場合の当りとハズレの回数を出しています。
ドアを選びなおしたほうが当りの確立はあがりました。
実際に100回やるところだったよ、プログラムって便利!
いきなりLet’s make a dealのゲストとして呼ばれたならドアを選びなおさなかったかもしれない。
納得できない人はドア3枚と新車を購入してヤギを2匹育てて100回試してみるといいよ!
Goggles作ったよ
Google Maps API V3 逆ジオコーディング
ここではGoogle Maps API V3 緯度経度から逆ジオコーディングする方法を解説しています。
※2018年7月16日よりAPIキーが必須で有料になりました。
Google Cloud Console にログインしてMaps JavaScript APIとGeocoding APIのキーを発行してください。
https://cloud.google.com/

デモはこちら
https://office-goto.info/demo/reverse-geocoding/
サンプルソース
google.maps.event.addDomListener(window, 'load', function() {
var latlng = new google.maps.LatLng(35.671277, 139.718489);
var options = {
zoom: 16,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("gmap"), options);
// InfoWindowオブジェクト
var infowindow = new google.maps.InfoWindow();
$("input[type=button]").click(function () {
var geocoder = new google.maps.Geocoder();
// 入力された緯度経度取得
latlng = new google.maps.LatLng($("#lat").val(), $("#lng").val());
// 逆ジオコーディング
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
// マップのセンターを入力された緯度経度に設定
map.setCenter(latlng);
// 入力された緯度経度にMarker設定
var marker = new google.maps.Marker({
map: map,
position: latlng
});
// 入力された緯度経度にInfoWindow
google.maps.event.addListener(marker, 'click', function (e) {
// 緯度経度から逆ジオコーディングした住所を表示
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
});
}
else {
alert("Geocode was not successful for the following reason: " + status);
}
});
});
});
サンプルソースの例では緯度経度を入力して、入力された緯度経度をもとに、逆ジオコーディングして住所を取得しInfoWindowに表示しています。
Google Maps API V3 ジオコーディング
ここではGoogle Maps API V3 住所からジオコーディングする方法を解説しています。
※2018年7月16日よりAPIキーが必須で有料になりました。
Google Cloud Console にログインしてMaps JavaScript APIとGeocoding APIのキーを発行してください。
https://cloud.google.com/

デモはこちら
https://office-goto.info/demo/geocoding/
サンプルソース
google.maps.event.addDomListener(window, 'load', function() {
var latlng = new google.maps.LatLng(35.671277, 139.718489);
var options = {
zoom: 16,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("gmap"), options);
// InfoWindowオブジェクト
var infowindow = new google.maps.InfoWindow();
// Markerオブジェクト
var marker = new google.maps.Marker({
position: latlng,
map: map
});
// マーカクリック時
google.maps.event.addListener(marker, 'click', function (e) {
infowindow.setContent('Hello World');
infowindow.open(map, marker);
});
$("input[type=button]").click(function () {
var geocoder = new google.maps.Geocoder();
var address = $("#address").val();
geocoder.geocode( { 'address': address}, function(results, status) {
var location = results[0].geometry.location;
if (status == google.maps.GeocoderStatus.OK) {
// マップのセンターを入力された住所に設定
map.setCenter(location);
// 入力された住所にMarker設定
var marker = new google.maps.Marker({
map: map,
position: location
});
// 入力された住所にInfoWindow
google.maps.event.addListener(marker, 'click', function (e) {
infowindow.setContent("Lat:" + String(location.lat()) + "<br>Lng:" + String(location.lng()));
infowindow.open(map, marker);
});
}
else {
alert("Geocode was not successful for the following reason: " + status);
}
});
});
});
サンプルソースの例ではTextフィールドに住所を入力して入力された住所から緯度経度を取得し、マップを移動してMarkerとInfoWindowを設定しています。

