PHPでは、連想配列のキーは登録された順番を保持する。
これが非常にありがたい。
この性質を利用してこの関数firstUniqはシンプルに実装できる。
PHPでは、連想配列のキーは登録された順番を保持する。
これが非常にありがたい。
この性質を利用してこの関数firstUniqはシンプルに実装できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php $str = "cbaedcba"; echo firstUniq ( $str ); function firstUniq($str) { $inarr = str_split ( $str ); $a = [ ]; foreach ( $inarr as $ch ) { if (array_key_exists ( $ch, $a )) { /* ある */ $a [$ch] += 1; } else { /* ない */ $a [$ch] = 1; } } foreach ( $a as $k => $v ) { if ($v === 1) { return $k; } } return null; } |
1 |
e |
本プライバシーポリシーは、ユズノハ(YUZUNOHA)がGooglePlay、AppStore等のウェブサイトにて公開している全てのアプリケーションソフトウェア(以下アプリ)における、利用者の個人情報もしくはそれに準ずる情報を取り扱う際に遵守する方針を示したものです。
ユズノハは、以下のとおり個人情報保護方針を定め、個人情報保護の仕組みを構築し、個人情報保護の重要性の認識と取組みを徹底することにより、個人情報の保護を推進致します。
●該当するアプリ
・Tower of Daren
●個人情報の管理
ユズノハは、お客さまの個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス・紛失・破損・改ざん・漏洩などを防止するため、セキュリティシステムの維持・管理体制の整備徹底等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行ないます。
●個人情報及びアプリの権限の利用目的
・ネットワークアクセス権限
⇒アプリ内への広告表示に利用されます。
・広告IDの利用権限
⇒アプリ内への広告表示に利用されます。
●個人情報の第三者への開示・提供の禁止
ユズノハは、お客さまよりお預かりした個人情報を適切に管理し、次のいずれかに該当する場合を除き、個人情報を第三者に開示いたしません。
・お客さまの同意がある場合
・法令に基づき開示することが必要である場合
●個人情報の安全対策
ユズノハは、個人情報の正確性及び安全性確保のために、セキュリティに万全の対策を講じています。
●ご本人の照会
お客さまがご本人の個人情報の照会・修正・削除などをご希望される場合には、ご本人であることを確認の上、対応させていただきます。
●法令、規範の遵守と見直し
ユズノハは、保有する個人情報に関して適用される日本の法令、その他規範を遵守するとともに、本ポリシーの内容を適宜見直し、その改善に努めます。
●お問い合わせ
Mail:studysteadystandby@gmail.com
人口は
横浜市+川崎市>大阪市+名古屋市
であることがわかった。
神奈川県すごかった。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
<?php function main(){ $map = getMap(); arsort($map); foreach($map as $k => $v){ $vp = valueToPercent($v); $vc = setComma($v); $k = getZenkakuPad($k); $vp = getHankakuPad($vp); echo $k . " => " . $vp . "% (" . $vc . "人)" . PHP_EOL; } } function getReverseStr($s){ $a = str_split($s); $len = count($a); $s = ""; for($i=$len-1; 0<=$i; $i--){ $s .= $a[$i]; } return $s; } function setComma($n){ $a = str_split($n); $len = count($a); $s = ""; for($i=0; $i<$len; $i++){ if($i!=0 && $i%3==0){ $s = "," . $s; } $pos = $len-1 - $i; $s = $a[$pos] . $s; } // $s = getReverseStr($s); return $s; } function getHankakuPad($n){ $s = "" . $n; $len = mb_strlen($s); $pad = ""; switch($len){ case 2: $pad = " "; break; case 1: $pad = " "; break; } return $pad . $n; } function getZenkakuPad($s){ $len = mb_strlen($s); $pad = ""; switch($len){ case 4: $pad = " "; break; case 3: $pad = " "; break; case 2: $pad = " "; break; case 1: $pad = " "; break; } return $s . $pad; } function valueToPercentForMap(&$map){ foreach($map as &$value){ $value = valueToPercent($value); } } function valueToPercent($value, $baseBalue = 3724844){ $percent = $value * 100 / $baseBalue; $percent = (int)$percent; return $percent; } function getMap(){ $s = getStr(); $a = explode("\n", $s); $map = []; foreach($a as $v){ $b = explode(",", $v); $map[$b[0]] = $b[1]; } return $map; } function getStr(){ $s = <<<EOT 大阪市,2691185 名古屋市,2295638 京都市,1475183 横浜市,3724844 神戸市,1537272 北九州市,961286 札幌市,1952356 川崎市,1475213 福岡市,1538681 広島市,1194034 仙台市,1082159 千葉市,971882 さいたま市,1263979 静岡市,704989 堺市,839310 新潟市,810157 浜松市,797980 岡山市,719474 相模原市,720780 熊本市,740822 EOT; return $s; } main(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
横浜市 => 100% (3,724,844人) 大阪市 => 72% (2,691,185人) 名古屋市 => 61% (2,295,638人) 札幌市 => 52% (1,952,356人) 福岡市 => 41% (1,538,681人) 神戸市 => 41% (1,537,272人) 川崎市 => 39% (1,475,213人) 京都市 => 39% (1,475,183人) さいたま市 => 33% (1,263,979人) 広島市 => 32% (1,194,034人) 仙台市 => 29% (1,082,159人) 千葉市 => 26% (971,882人) 北九州市 => 25% (961,286人) 堺市 => 22% (839,310人) 新潟市 => 21% (810,157人) 浜松市 => 21% (797,980人) 熊本市 => 19% (740,822人) 相模原市 => 19% (720,780人) 岡山市 => 19% (719,474人) 静岡市 => 18% (704,989人) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<?php function p($a = "") { echo $a . PHP_EOL; } function generateArray($size = 20) { $a = [ ]; for($i = 0; $i < $size; $i ++) { $a [] = 0; } return $a; } function probabilityOf($d) { $random100 = lcg_value () * 100; return ($random100 < $d); } function challenge($percent, $times) { for($i = 0; $i < $times; $i ++) { if (probabilityOf ( $percent )) { return true; } } return false; } function challengeWinAverage($percent, $times, $challengetimes) { $cnt = 0; for($i = 0; $i < $challengetimes; $i ++) { if (challenge ( $percent, $times )) { $cnt ++; } } $ave = $cnt * 100.0 / $challengetimes; return $ave; } function calcAnalyticalSolution($percent, $times) { return (100 * (1 - (pow ( 1 - $percent / 100.0, $times )))); } function main() { $percent = 10; $times = 16; $challengetimes = 100000; p ( $percent . "%の確率が" . $times . "回の試行の中で1回以上発生する確率" ); $wa = challengeWinAverage ( $percent, $times, $challengetimes ); p ( "計算解 : " . $wa . "%" ); $as = calcAnalyticalSolution ( $percent, $times ); p ( "解析解 : " . $as . "%" ); } main (); |
1 2 3 |
10%の確率が16回の試行の中で1回以上発生する確率 計算解 : 81.549% 解析解 : 81.469798111482% |
精度がよさそう。今度からこれを使おう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php function p($a = "") { echo $a . PHP_EOL; } function generateArray($size = 20) { $a = [ ]; for($i = 0; $i < $size; $i ++) { $a [] = 0; } return $a; } function probabilityOf($d) { $random100 = lcg_value () * 100; return ($random100 < $d); } function main() { $times = 10000000; $cnt = 0; $percent = 34.56; for($i = 0; $i < $times; $i ++) { if (probabilityOf ( $percent )) { $cnt ++; } } $proportion = $cnt * 100.0 / $times; p ( "cnt : " . $cnt ); p ( "proportion : " . $proportion ); } main (); |
1 2 |
cnt : 3456685 proportion : 34.56685 |