[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 04/30 13:44 / Filesize : 65 KB / Number-of Response : 290
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はID出して書き込みやがれ 84



1 名前:nobodyさん mailto:sage [2009/04/27(月) 21:39:11 ID:???]
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 83
pc11.2ch.net/test/read.cgi/php/1238958898/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ

2 名前:nobodyさん mailto:sage [2009/04/27(月) 21:40:06 ID:???]
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 82
pc11.2ch.net/test/read.cgi/php/1236532468/
【PHP】下らねぇ質問はID出して書き込みやがれ 81
pc11.2ch.net/test/read.cgi/php/1234958956/
【PHP】下らねぇ質問はID出して書き込みやがれ 80
pc11.2ch.net/test/read.cgi/php/1233479457/
【PHP】下らねぇ質問はID出して書き込みやがれ 79
pc11.2ch.net/test/read.cgi/php/1231850905/
【PHP】下らねぇ質問はID出して書き込みやがれ 78
pc11.2ch.net/test/read.cgi/php/1230026935/
【PHP】下らねぇ質問はID出して書き込みやがれ 77
pc11.2ch.net/test/read.cgi/php/1228667259/
【PHP】下らねぇ質問はID出して書き込みやがれ 76
pc11.2ch.net/test/read.cgi/php/1226517332/
【PHP】下らねぇ質問はID出して書き込みやがれ 75
pc11.2ch.net/test/read.cgi/php/1224168721/
【PHP】下らねぇ質問はID出して書き込みやがれ 74
pc11.2ch.net/test/read.cgi/php/1221909788/
【PHP】下らねぇ質問はここに書き込みやがれ 73
pc11.2ch.net/test/read.cgi/php/1220440493/
【PHP】下らねぇ質問はここに書き込みやがれ 72
pc11.2ch.net/test/read.cgi/php/1218855685/

3 名前:nobodyさん mailto:sage [2009/04/27(月) 21:41:27 ID:???]
関連リンク
■本家マニュアル   www.php.net/manual/ja/
■日本PHPユーザ会 www.php.gr.jp/
■PEARマニュアル  pear.php.net/manual/ja/
■メーリングリスト   ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    framework.zend.com/manual/ja/
■Smartyマニュアル  www.smarty.net/manual/ja/

(以下英語)
■Zend本家      www.zend.com/
■Zend Framework  framework.zend.com/
■php | architect   www.phparch.com/
■Smarty       www.smarty.net
■Smartyマニュアル smarty.php.net/manual/en/
■PECL本家(英語) pecl.php.net/

4 名前:nobodyさん mailto:sage [2009/04/27(月) 21:43:26 ID:???]
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。

5 名前:nobodyさん mailto:sage [2009/04/27(月) 21:44:07 ID:???]
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください

6 名前:nobodyさん mailto:sage [2009/04/27(月) 21:47:13 ID:???]
姉妹スレ。IDをどーしても出したくない人はこちら。

【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
pc11.2ch.net/test/read.cgi/php/1233590976/

7 名前:nobodyさん mailto:sage [2009/04/27(月) 21:58:17 ID:???]
pc11.2ch.net/test/read.cgi/php/1238958898/1000
さんくす!

8 名前:nobodyさん [2009/04/27(月) 22:11:17 ID:ngOdqG7u]
$a = (ほにゃら) ? false : true;
if文だと思うんですがマニュアルでこのことについて書かれている箇所に誘導してもらえないでしょうか

9 名前:978 [2009/04/27(月) 22:18:38 ID:skcV1wh3]
お礼が遅くなってすいません。ありがとうございました

10 名前:nobodyさん mailto:sage [2009/04/27(月) 22:22:21 ID:???]
>>8
三項演算子
ttp://php.benscom.com/manual/ja/language.operators.comparison.php



11 名前:nobodyさん [2009/04/27(月) 22:36:38 ID:ngOdqG7u]
>>10
ありがとうございます。
マニュアルの例のように結果によって同じ変数に別な値を入れるときは
if分よりこの書き方の方がすっきりしますね。
使い分けてみることにします。

12 名前:nobodyさん [2009/04/28(火) 00:04:52 ID:hPvdrkqO]
"kcaptcha"と呼ばれる画像認証ソフトを使おうと思い同梱されていた例題ファイルを見てみたところ

<?php
session_start();
?>
<form action="" method="post">
<p>Enter text shown below:</p>
<p><img src="index.php/?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}
unset($_SESSION['captcha_keystring']);
?>

一番最後に unset($_SESSION['captcha_keystring']); とセッション変数をアンセットしてありました。
ページの先頭には session_start(); が宣言されているのでページのリロード時には必ずセッションは
初期化されるわけですが、それでもあえて最後にセッションをアンセットしなければならない理由はなんでしょうか?

13 名前:nobodyさん mailto:sage [2009/04/28(火) 00:12:44 ID:???]
>>12
>ページの先頭には session_start(); が宣言されているので
>ページのリロード時には必ずセッションは初期化されるわけですが

まずここの解釈が間違ってる。session_startのリファレンスをよく読んでごらん。

14 名前:nobodyさん mailto:sage [2009/04/28(火) 10:54:03 ID:???]
毎度初期化されて茶セッションの意味ないじゃん

15 名前:nobodyさん [2009/04/28(火) 14:28:24 ID:PkQXIDSH]
【PHPのバージョン】php5.26  【連携ソフトウェア】Apache
入力されたマルチバイト文字列(SJIS)を、配列ではなく、予め用意した変数に、
一文字ずつ分割して格納したく思っています。例えば、
$koe = "ありがとう";
なら、
$ichi ="あ";  $ni ="り";  $san ="が";
$yon ="と";  $go ="う";  $roku ="";  $nana ="";
という風に変換する関数を設定したいのです。 具体的に、どういう処理をすればよいのでしょうか?
どうかご助力、お願いいたします。


16 名前:nobodyさん mailto:sage [2009/04/28(火) 14:33:27 ID:???]
foreachかforでまわしながら連想配列で代入してからextract($array)
SJISはちょっとイヤンな感じだからUTFにしたら?

17 名前:nobodyさん mailto:sage [2009/04/28(火) 15:22:47 ID:???]
utf8ならlist($ichi, ...) = preg_split("//u", ..)みたいな感じでおkと思われる

18 名前:nobodyさん mailto:sage [2009/04/28(火) 15:25:45 ID:???]
つmb_split

19 名前:nobodyさん mailto:sage [2009/04/28(火) 15:28:01 ID:???]
// mb_substrとか使えなかったっけ?

$array = array("ichi", "ni", "san", "shi", "go");
$string = "ありがとう";

$count = 0;
foreach ($array as $key => $value) {
$array[$key] = mb_substr($string, $i, 1, "Shift_JIS");
++$count;
}

20 名前:19 mailto:sage [2009/04/28(火) 15:31:09 ID:???]
ごめん間違えた
$array[$key] = mb_substr($string, $i, 1, "Shift_JIS");
これは
${$key} = mb_substr($string, $i, 1, "Shift_JIS");
にしてくれ



21 名前:nobodyさん mailto:sage [2009/04/28(火) 15:39:37 ID:???]
まだ訂正すべき点があるようだが

22 名前:19 mailto:sage [2009/04/28(火) 15:40:57 ID:???]
うん、もう気づいたけどめんどくさいからいいや

23 名前:nobodyさん [2009/04/28(火) 16:53:54 ID:7p1vmHWL]
昨日質問したのですが、最後の方で流されたので、
再度質問させていただきます。

CSSファイルの特定のスタイルを取得したいと思います。

$css = 'a:link{background-color:#ffffff;color:#003399;}';
preg_match('/a:link{.*?color:#(.*?);/is',$css,$style);

とし、「color:#003399」の「003399」だけ取得したいのですが、
background-colorの方を取得してしまいます。
どういう正規表現を書けばいいのでしょうか?コードの指摘をお願いします。

24 名前:12 [2009/04/28(火) 20:19:52 ID:hPvdrkqO]
>>13-14
2回目以降のsession_start()はセッション変数の取り込みに奔走するんですね。
それでしたらわざわざ最後にunsetでセッション変数を破棄しなくても、
再度session_start()が実行されれば最新の$_SESSION['captcha_keystring']が
読み込まれて特に問題なく動作するような気がするんですが・・・

25 名前:nobodyさん mailto:sage [2009/04/28(火) 20:38:49 ID:???]
>>23
条件がよくわからんがa:linkに指定されたcolor値で#000000の形式のみを取得ってこと?

/a:link[^\}]*[^\-]color\s*:\s*#(\w{6})/is

26 名前:nobodyさん mailto:sage [2009/04/28(火) 20:50:55 ID:???]
>>24
お前は何を言ってるんだ

27 名前:23 [2009/04/28(火) 22:10:29 ID:7p1vmHWL]
>>25
こういう書き方するんですね。勉強になりました。ありがとうございました。

28 名前:nobodyさん mailto:sage [2009/04/28(火) 22:20:22 ID:???]
>>24
とりあえず例題で動かしてから、自分でunset外して動作を見てごらん。
ソース眺めて悩むよりそっちの方が早いよ。

29 名前:12 [2009/04/28(火) 23:31:23 ID:hPvdrkqO]
>>28
↓のようにコメントアウトして実行してみました
//unset($_SESSION['captcha_keystring']);

結果は・・・、なぜか、というか予想通り何の問題もなく正常に動作しました。

やはり最後のセッション変数のunsetは不要だったんでしょうか。
あるいは古いブラウザでの互換性を重視しておまじない的に書いたんでしょうか。

30 名前:nobodyさん mailto:sage [2009/04/28(火) 23:51:01 ID:???]
>>29
そこで「なぜか」で止まっちゃダメだ。
$_SESSION['captcha_keystring']には、どの時点でどんな値が入っていたのか追ってみよう。



31 名前:12 [2009/04/29(水) 03:02:23 ID:I34g5E5l]
>>30
$_SESSION['captcha_keystring']にはアンセットされる直前までは
現在表示されてるものよりひとつ前のCaptchaの数字が格納されていました。

ただアンセットしてもしなくても次にsession_start()されるときに次のCaptchaの数字が
上書きされるようです。

う〜む・・・、なぜわざわざアンセットしているんでしょう( ´・ω・)・・・

32 名前:nobodyさん mailto:sage [2009/04/29(水) 03:41:14 ID:???]
複数回実行するときのためにアンセットしてんじゃないの?


33 名前:nobodyさん mailto:sage [2009/04/29(水) 05:05:58 ID:???]
顔文字とか真面目に質問する気あんの?

34 名前:nobodyさん mailto:sage [2009/04/29(水) 05:39:51 ID:???]
認証に使うライブラリなら、一度認証に使用したらさっさと廃棄しないと危険だからじゃないの。

35 名前:nobodyさん mailto:sage [2009/04/29(水) 05:46:01 ID:???]
つーかそもそもCaptchaって何かわかってんだろうか

36 名前:nobodyさん mailto:sage [2009/04/29(水) 06:00:07 ID:???]
>>31
>次にsession_start()されるときに次のCaptchaの数字が上書きされるようです。

違う。$_SESSION['captcha_keystring']をセットしてるのは誰かよーく調べてみなさい。

37 名前:nobodyさん mailto:sage [2009/04/29(水) 06:20:53 ID:???]
提示されたコードばかり見てて全体のフロー、つまり裏でKeystringが発行されてるとこが見えてないんじゃないかな
unset() はキーを発行する処理に対応してるから、そっちの実装を見ないと処理の流れは分からない

新規/リロードなら再発行、ポストなら検証までスルーって実装にすれば unset() いらなくなるかな

38 名前:nobodyさん mailto:sage [2009/04/29(水) 06:30:11 ID:???]
これ、「表示されているアルファベットを入力してください」とか、いうヤツでしょ。たぶん。
unsetしなかったら、同じキーで何度でも使えちゃうじゃん。
アカウント取り放題とか、メール出し放題とか。

キー値はサーバ側に保存しなきゃならんのだし、unsetまたはそれと同等な処理しなくて
良いパターンってないと思うけど。


39 名前:nobodyさん mailto:sage [2009/04/29(水) 06:43:06 ID:???]
バリデーションに成功すればキーは破棄出来るわけだから同じキーが2度以上使われる可能性は排除できるよ

発行と検証の2フェーズあって、検証中でなければ前回の残りがあったとしてもそれを破棄して再発行すればいいわけ
検証中で無いことは empty($_POST["key..]) && !isset($_SESSION['key..]) で判別可能

unset() をクライアントスクリプト側に任せているのは、例えば3回まではトライ可能、といった
キーを無効にするタイミングを選択できるようにしたいとかそういうことじゃないかと予想

40 名前:nobodyさん mailto:sage [2009/04/29(水) 06:45:38 ID:???]
うっぷす!
× empty($_POST["key..]) && !isset($_SESSION['key..])
○ empty($_POST["key..])
再発行条件が empty($_POST["key..]) && isset($_SESSION['key..]) かなw



41 名前:nobodyさん mailto:sage [2009/04/29(水) 06:53:22 ID:???]
シンプルで不足分はユーザが書く小さなライブラリ > 柔軟なAPIがありクライアントのコード量が少なく高機能で汎用性が高く大きなライブラリ

42 名前:nobodyさん mailto:sage [2009/04/29(水) 07:00:53 ID:???]
>>38
いや、機械と人間の識別に使うもの。
これだけだと、人間ならアカウント取り放題、メールし放題、コメントし放題だよ。
後半はその通り。

43 名前:nobodyさん mailto:sage [2009/04/29(水) 07:07:51 ID:???]
>>42
多分、この認証ライブラリの動作を完全に勘違いしてると思う。
自分はもう面倒なんで、これ以上言わんが。

44 名前:nobodyさん [2009/04/29(水) 07:37:23 ID:sqsMUdXV]
Prepared statementって扱うの難しいですね・・・
オブジェクト指向とかさっぱりだし
ぶっちゃけ mysql_real_escape_stringで十分と思ってたら
えらい目に会いますか?

45 名前:nobodyさん mailto:sage [2009/04/29(水) 08:09:15 ID:???]
>>44
趣味のレベルなら全然問題は無い。
お仕事なら規模にも依るが、苦労はすると思う。

46 名前:nobodyさん mailto:sage [2009/04/29(水) 12:10:15 ID:???]
formから入力された文字列をmysqlに保存するサンプルスクリプトを教えてください

DB名:sample_db
テーブル名:sample_tbl
user名:sample
pass:pass

47 名前:46 [2009/04/29(水) 12:10:56 ID:5Db2GJA3]
ID出し忘れましたすみません。。。

48 名前:nobodyさん mailto:sage [2009/04/29(水) 13:18:40 ID:???]
>>46
マニュアル


49 名前:nobodyさん mailto:sage [2009/04/29(水) 13:24:45 ID:???]
本当にくだらねぇ質問でわろた

50 名前:nobodyさん mailto:sage [2009/04/29(水) 13:24:55 ID:???]
>>46
【PHP】Lvうpしたいので宿題ください
pc11.2ch.net/test/read.cgi/php/1147830986/



51 名前:46 [2009/04/29(水) 13:49:34 ID:5Db2GJA3]
わかりました
移動します
すいませんでした

52 名前:nobodyさん mailto:sage [2009/04/29(水) 16:23:34 ID:???]
誘導先で48が暴れてますよ

53 名前:nobodyさん mailto:sage [2009/04/29(水) 16:25:55 ID:???]
君が論破されてよっぽど悔しかったのね

54 名前:nobodyさん mailto:sage [2009/04/29(水) 16:27:51 ID:???]
>>53
こっちまで荒らしに来ないでおk
向こうのスレで>>46と共食いしてろや

55 名前:nobodyさん [2009/04/29(水) 23:16:13 ID:bTfRl/qJ]
headerで出力した内容を後から削除(上書きでなく)したい場合は
どうしたらいいですか?
たとえば、Content-Script-Type: text/javascriptをheaderで吐いてから、
ケータイなので取り消したい場合などです

56 名前:nobodyさん mailto:sage [2009/04/29(水) 23:19:19 ID:???]
分からないうちから吐かない

57 名前:nobodyさん mailto:sage [2009/04/29(水) 23:20:27 ID:???]
明らかに設計ミス

58 名前:nobodyさん mailto:sage [2009/04/29(水) 23:25:22 ID:???]
>>55
無理
設計からみなおせ

59 名前:nobodyさん mailto:sage [2009/04/29(水) 23:26:01 ID:???]
>>55
取り消しはできんと思うが、 headerを実行するタイミングはずらせたはず。
jp.php.net/manual/ja/function.ob-start.php

60 名前:nobodyさん mailto:sage [2009/04/29(水) 23:49:25 ID:???]
できるとすればmod_headersでアンセットくらいかな



61 名前:nobodyさん [2009/04/29(水) 23:50:48 ID:sqsMUdXV]
>>45
なるほど。ありがとうです


62 名前:nobodyさん mailto:sage [2009/04/30(木) 09:35:33 ID:???]
>>55
headerで違うページに飛ばしてやり直し

63 名前:nobodyさん [2009/04/30(木) 11:53:33 ID:29t/7geC]
確率について質問です

$foo=array(
"A" => 60,
"B" => 20,
"C" => 10,
"D" => 7,
"E" => 3,
);
$r = rand(1, 100);
foreach($foo as $k => $v){
if($r<=$v){
$ans=$k;
break;
}
$r-=$v;
}
echo $ans;

64 名前:63 [2009/04/30(木) 11:56:30 ID:29t/7geC]
$fooに確率を設定します
$rに1〜100まで範囲でランダムで数字を代入します
foreachで$fooのキーと値を回していき、値がランダムの数字$rより低いか同じなら$キーを表示します


>>63のコードは確率のアルゴリズムでありますでしょうか?

65 名前:nobodyさん mailto:sage [2009/04/30(木) 12:00:36 ID:???]
は?
質問の意図がイミフなんだが。

66 名前:nobodyさん mailto:sage [2009/04/30(木) 12:09:31 ID:???]
A〜Eが正しく指定された確率で出力されるかってことじゃないかと予想

67 名前:nobodyさん mailto:sage [2009/04/30(木) 12:30:14 ID:???]
>>65
コードのまんまだと思うけど

68 名前:nobodyさん [2009/04/30(木) 12:32:14 ID:29t/7geC]
>>63は有名な?確率のアルゴリズムらしいんですが
これで確率が出せるのかがわかりません

69 名前:nobodyさん mailto:sage [2009/04/30(木) 12:38:19 ID:???]
出せるんでは?

70 名前:nobodyさん mailto:sage [2009/04/30(木) 12:41:55 ID:???]
このスレには以下の初心者も閲覧しています

65 名前:nobodyさん[sage] 投稿日:2009/04/30(木) 12:00:36 ID:???
は?
質問の意図がイミフなんだが。



71 名前:nobodyさん mailto:sage [2009/04/30(木) 12:44:25 ID:???]
普通に意味不明だろ

72 名前:nobodyさん mailto:sage [2009/04/30(木) 12:44:46 ID:???]
実際にやってみればいい

$foo=array("A" => 60, "B" => 20, "C" => 10, "D" => 7,"E" => 3,);

function castFuckinDice($foo) {
$r = rand(1, 100);
foreach ($foo as $k => $v){
if($r<=$v){
$ans=$k;
break;
}
$r-=$v;
}
return $ans;
}

foreach ($foo as $k => $v) {
$encounter[$k] = 0;
}

$max_trials = pow(2, PHP_INT_SIZE * 8) / 2;

for ($i=0; $i < $max_trials; $i++) {
$spot = castFuckinDice($foo);
$encounter[$spot] ++;

foreach ($foo as $k => $v) {
$ratio = $i ? $encounter[$k] / $i : 0;
printf("[%s]: %02.1f ", $k, $ratio * 100);
}
echo "\r";
}

73 名前:nobodyさん [2009/04/30(木) 12:45:25 ID:29t/7geC]
$vのキーと値がAと60のとき、確率は60%ですが
$rの値が1〜60の場合ですと当たりってことですよね
Bと20のときは1〜20のときが当たりってことですよね

ってことはAの60%から判定されるってことで完全な確率のアルゴリズムではない気がするのです

74 名前:nobodyさん [2009/04/30(木) 12:46:41 ID:29t/7geC]
>>71
すみません、私の説明ではこれ以上無理なのでここ読んできてください
ttp://q.hatena.ne.jp/1170658225

75 名前:nobodyさん mailto:sage [2009/04/30(木) 12:49:30 ID:???]
>>73
Aの60%から判定されるってどういうこと?
曖昧な表現はやめてくれ

76 名前:nobodyさん [2009/04/30(木) 12:52:14 ID:29t/7geC]
>>63のコードより
$fooの配列の戦闘は"A"=>60なのでforeachで回すと"A"=>60のところから回ります

77 名前:nobodyさん mailto:sage [2009/04/30(木) 12:52:23 ID:???]
>>74
有名な確率のアルゴリズムって誰が言ってたの?

78 名前:nobodyさん mailto:sage [2009/04/30(木) 12:53:44 ID:???]
さっきからイミフしか言わない人は出てこなくていいよ^^;

79 名前:nobodyさん mailto:sage [2009/04/30(木) 12:54:06 ID:???]
>>76
"A"=>60のところから回って
1〜100からランダムに得た値と比較して小さかったらそれを答えとするんだから60%じゃん

80 名前:nobodyさん mailto:sage [2009/04/30(木) 13:00:48 ID:???]
なんとなく言いたいことはわかるし、コードも正しい気がするが、>>73は本格的に意味不明。



81 名前:nobodyさん mailto:sage [2009/04/30(木) 13:13:35 ID:???]
PHP言語以前に日本語が解読できん

82 名前:nobodyさん mailto:sage [2009/04/30(木) 13:15:48 ID:???]
質問者は>>73にあるように「60%から検証を始める」と問題がありそうだと考えているようだが
どの目が出るかは rand(1, 100) を実行した時点で決まる
あとは検証してるだけなので、どのアルファベットから始めても確定した過去は変わらない

狐につままれたように思っているのは確率分布の上側を除いていく処理が、なぜ指定された割合と一致するのかということだと予想
これが確率論から導けるのか、それともたまたま計算結果が一致する別のアルゴリズムなのか

それが「この処理は確率のアルゴリズムであるのか?」という表現に至ったのではないかね

83 名前:nobodyさん mailto:sage [2009/04/30(木) 13:22:20 ID:???]
どんな回答が欲しいのか知らんが、とりあえずエスパー能力を発揮して答えるならば

>>68
出せます。安心してお使いください。

84 名前:nobodyさん mailto:sage [2009/04/30(木) 13:22:21 ID:???]
だったら「人に教えてもらったコードなんですがこのアルゴリズムでなぜ確率が計算できるのですか?」とでも聞くべき.
他人に対する配慮が足りない.

85 名前:nobodyさん mailto:sage [2009/04/30(木) 13:24:04 ID:???]
>>84

>>64

86 名前:nobodyさん mailto:sage [2009/04/30(木) 13:24:45 ID:???]
まあこのアルゴリズム体操でも見ておちつくといい
ttp://114.182.140.15/~user/public_html/cgi-bin/bbs18/bbsdata/20.gif

87 名前:nobodyさん [2009/04/30(木) 13:25:14 ID:2iRqPJM5]
>>82
突っかかる部分もありますが、納得できましたので閉めます

88 名前:nobodyさん mailto:sage [2009/04/30(木) 13:25:21 ID:???]
>>85
64のどこに84の内容が抑えられてるんだ?

89 名前:nobodyさん mailto:sage [2009/04/30(木) 13:26:16 ID:???]
>>87
突っかかる部分って?

90 名前:nobodyさん mailto:sage [2009/04/30(木) 13:26:41 ID:???]
>>84
で、そういう風に聞いたら答えられるの?



91 名前:nobodyさん mailto:sage [2009/04/30(木) 13:28:58 ID:???]
横から煽ってるだけの奴は何だ? ヒマなのか?

92 名前:nobodyさん mailto:sage [2009/04/30(木) 13:30:05 ID:???]
>84

人に教えてもらったコードなんですがこのアルゴリズムでなぜ確率が計算できるのですか?

93 名前:nobodyさん mailto:sage [2009/04/30(木) 13:30:51 ID:???]
ググレ

94 名前:nobodyさん mailto:sage [2009/04/30(木) 13:38:39 ID:???]
>>84
まだすか?wwwwwwwwww

95 名前:nobodyさん mailto:sage [2009/04/30(木) 13:41:45 ID:???]
答えは>>82で出てるわけだが

96 名前:nobodyさん mailto:sage [2009/04/30(木) 13:48:02 ID:???]
>>82先生と>>84先生は別人でしょwwwwwwwwwww
84出て来いよwwwwwwwwww

97 名前:nobodyさん mailto:sage [2009/04/30(木) 14:24:02 ID:???]
>>87
1から100までの数からランダムに選択したら、それが60以下である確率は0.6であるというのは明白だろう
この性質を利用して、「60以下である」という条件をAに結びつけ、60以下の数ならAを返すようにする
これはAが60%で出現するということと等価だ

ある数が、60以下ならすぐ終了
60以上ならそこから60を引いて、次にそれが20以下かどうか調べる
Ex. ある数が88なら、60以下か検証、違うから60を引いて28、20以下じゃないので20を引いて8、10以下なのでCを返す

というわけでそのループは、与えられた数が基準より小さいかを効率よく調べるアルゴリズムであって、確率の計算ではない
確率が得られているのは全て rand() に依る
その確率をアルファベットに結び付けているのがこのアルゴリズムというか処理ということになる

と俺なら考えるが、アルゴリズムがなぜ動くかなんて自分の頭で納得するしかないよ

98 名前:nobodyさん mailto:sage [2009/05/01(金) 15:12:10 ID:???]
test

99 名前:nobodyさん mailto:sage [2009/05/01(金) 20:43:21 ID:???]
最近人少ないですね
PHPの時代は終わりでしょうか

100 名前:nobodyさん mailto:sage [2009/05/01(金) 20:50:02 ID:???]
昔からこんなもんだろ
たまにくだらない話題で議論はじまって100スレぐらい一気に伸びるだけ



101 名前:nobodyさん mailto:sage [2009/05/01(金) 21:28:59 ID:???]
100スレ?

102 名前:nobodyさん mailto:sage [2009/05/01(金) 21:46:18 ID:???]
100レスの間違いだろjk






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<65KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef