どうやったら上手い題名が付けられるのか…。
取り敢えず、何分の何の確率でリプライを返すだとか、投稿するだとか、そういう機能について軽く解説してみたよ、程度の記事です。EasyBotterの基本的設置ができている方でないと、難しいかもしれません。
なお、ここで用いているEasyBotterのプログラムの配布元は以下です。
・プログラミングができなくても作れるTwitter botの作り方
どうしてもそのサイトが見つからなかった場合のみ、以下からも可。
→ダウンロード(zip) ver.2.05
ただし、最新版が更新されている可能性はありますので、できれば大元のサイトに出かけて下さい。設置方法とかトラブルシューティングとかもありますので。
以下、続きで書いてみます。
.
取り敢えず、何分の何の確率でリプライを返すだとか、投稿するだとか、そういう機能について軽く解説してみたよ、程度の記事です。EasyBotterの基本的設置ができている方でないと、難しいかもしれません。
なお、ここで用いているEasyBotterのプログラムの配布元は以下です。
・プログラミングができなくても作れるTwitter botの作り方
どうしてもそのサイトが見つからなかった場合のみ、以下からも可。
→ダウンロード(zip) ver.2.05
ただし、最新版が更新されている可能性はありますので、できれば大元のサイトに出かけて下さい。設置方法とかトラブルシューティングとかもありますので。
以下、続きで書いてみます。
.
+ + + + + + + + + +
さて、ランダムなタイミングで投稿するとか、100%じゃなくてもっと低い確率で返事したり、TL上の単語に反応させたりするには、スクリプトではif構文と乱数生成のrandを使っているようです。
木菟は大それた改造するほど知識がありませんので、このrandについて調べてみました。
if(rand(0,20) === 0){
$response = $eb->postRandom("data.txt");
}
これは1/21の確率でdata.txtから投稿を行うものです。この「rand(0,20) === 0」が意味するものは何でしょうか。
rand(A,B)とは、A以上B以下の数字から重複を許してランダムに数字を吐き出すコマンドです。重複を許さないと、数字が一周するまで同じ数字は出てきません。ものすごーく大雑把な説明だけど!プロが見たら突っ込んでくるかもだけど!!(爆)
if構文は、「if(【条件】){【条件にあてはまったら実行する事柄】;}」という構文。この場合、0以上20以下の数字からランダムに1個の数字を取り出して、それが0だった場合はdata.txtの中からランダムで1つ投稿する。という意味です。0以上20以下の数字からランダムに1個取り出して、それが0である確率は1/21なので、1/21の確率で投稿する、と言えるわけです。
イコール記号が3つ並んでますね。イコール記号は2つか3つ並べておかないと、「=」の意味を成してくれません。本当は2つの場合と3つの場合にも厳密な意味の差はあるのですが、元々曖昧さを生み出す事を目的に確率を付けようとしているので、今回はその意味に関しては割愛します。
さて、何故最低2つは必要なのかというと、不等号の意味を出す時にもイコール記号が必要だからです。≦や≧は全角では存在しますが、半角には存在しません。そして、今扱っているのはphpプログラムである以上、半角で書くのが基本です。<や>にイコール記号を付け足す事で≦や≧の意味を持たせているのです。
なお、主な等号不等号の書き方はこんな感じです。
=== (とても厳密に)等しい
== 等しい
<= ≦
>= ≧
< そのまま
> そのまま
以上の事を踏まえると、単純な「何分の一」という確率だけでなく、例えば「2/3の確率でTLに反応」という構文が作れたりします。
こんな感じ。
if(rand(0,2) > 0){
$response = $eb->replyTimeline(3,"reply_pattern.php");
}
これは0以上2以下の数字の中からランダムで数字を取り出して、それが0より大きければ3分前までのTLに反応する構文です。
蛇足ですが、このスクリプトを使っているbotは5分ごとにcronで叩いていますので、理論的には3/5×2/3=2/5くらいの確率で反応してる…筈?(笑) リプライに対してはきちんと5分前のものまで100%対応するよう設定してます。ランダムリプライはしてないけど。
以上、ブログでも書いた物をそのまま引っ張ってきました。本当は加筆しようかとも思ったんですが、何を書き足そうとしていたのか分からなくなった。何かあれば、コメントか拍手かツイッターにてお知らせください。気付くのに時間はかかりますが、対応できれば対応します。
木菟は大それた改造するほど知識がありませんので、このrandについて調べてみました。
if(rand(0,20) === 0){
$response = $eb->postRandom("data.txt");
}
これは1/21の確率でdata.txtから投稿を行うものです。この「rand(0,20) === 0」が意味するものは何でしょうか。
rand(A,B)とは、A以上B以下の数字から重複を許してランダムに数字を吐き出すコマンドです。重複を許さないと、数字が一周するまで同じ数字は出てきません。ものすごーく大雑把な説明だけど!プロが見たら突っ込んでくるかもだけど!!(爆)
if構文は、「if(【条件】){【条件にあてはまったら実行する事柄】;}」という構文。この場合、0以上20以下の数字からランダムに1個の数字を取り出して、それが0だった場合はdata.txtの中からランダムで1つ投稿する。という意味です。0以上20以下の数字からランダムに1個取り出して、それが0である確率は1/21なので、1/21の確率で投稿する、と言えるわけです。
イコール記号が3つ並んでますね。イコール記号は2つか3つ並べておかないと、「=」の意味を成してくれません。本当は2つの場合と3つの場合にも厳密な意味の差はあるのですが、元々曖昧さを生み出す事を目的に確率を付けようとしているので、今回はその意味に関しては割愛します。
さて、何故最低2つは必要なのかというと、不等号の意味を出す時にもイコール記号が必要だからです。≦や≧は全角では存在しますが、半角には存在しません。そして、今扱っているのはphpプログラムである以上、半角で書くのが基本です。<や>にイコール記号を付け足す事で≦や≧の意味を持たせているのです。
なお、主な等号不等号の書き方はこんな感じです。
=== (とても厳密に)等しい
== 等しい
<= ≦
>= ≧
< そのまま
> そのまま
以上の事を踏まえると、単純な「何分の一」という確率だけでなく、例えば「2/3の確率でTLに反応」という構文が作れたりします。
こんな感じ。
if(rand(0,2) > 0){
$response = $eb->replyTimeline(3,"reply_pattern.php");
}
これは0以上2以下の数字の中からランダムで数字を取り出して、それが0より大きければ3分前までのTLに反応する構文です。
蛇足ですが、このスクリプトを使っているbotは5分ごとにcronで叩いていますので、理論的には3/5×2/3=2/5くらいの確率で反応してる…筈?(笑) リプライに対してはきちんと5分前のものまで100%対応するよう設定してます。ランダムリプライはしてないけど。
以上、ブログでも書いた物をそのまま引っ張ってきました。本当は加筆しようかとも思ったんですが、何を書き足そうとしていたのか分からなくなった。何かあれば、コメントか拍手かツイッターにてお知らせください。気付くのに時間はかかりますが、対応できれば対応します。
PR
この記事にコメントする
カレンダー
04 | 2024/05 | 06 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
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 |
ブログ内検索
最新記事
(08/29)
(08/07)
(05/28)
(05/28)
(04/24)
最新トラックバック
プロフィール
HN:
木菟 伶
性別:
非公開
職業:
学生
自己紹介:
パソコンで遊ぶのが
割と好きで、
本屋さんに通うのも
結構好きで、
軽い調べ物なら好きな、
探せばどこかにいるような
そんな学生。
イマドキらしく
忘れっぽく、
熱されても
冷めてしまうことも。
割と好きで、
本屋さんに通うのも
結構好きで、
軽い調べ物なら好きな、
探せばどこかにいるような
そんな学生。
イマドキらしく
忘れっぽく、
熱されても
冷めてしまうことも。
Twitter
アーカイブ