- 1 名前:デフォルトの名無しさん [2007/11/05(月) 20:38:18 ]
- あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】 C/C++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1193150915/
- 554 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:10:23 ]
- >>547
実際はね、重きじゃなくて入力データなんです。 入力データ(配列でいうとdata[50][5])が移動間を動く感じなんですけど 各状態にデータがあって、その入力データを各状態のデータによって 計算して出された値を各移動確率とかけるというわけなんですけど。 で書いてくださったプログラムにおいて、 for(cnt=0;cnt<50;cnt++){それを50回 for(i=0;i<7;i++)cal_next_gs(list[i]);は7つの状態間で1回の移動につき確率計算 } ってのはわかるんです。1次元配列として引数として渡せば できるのかなーと今思いました。 for(cnt=0;cnt<50;cnt++){それを50回 for(i=0;i<7;i++)cal_next_gs(list[i],data[cnt]);は7つの状態間で1回の移動につき確率計算 } void cal_next_gs(struct gstate *gs,float data[5]) { //計算して移動確率を計算 } でいけそうな感じがします。
- 555 名前:デフォルトの名無しさん [2007/11/15(木) 21:27:17 ]
- >>527
ありがとうございました。
- 556 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:38:48 ]
- >>554
何をいいたいのか、いまいち分からないんだが、 どんな入力に対してどんな出力が欲しいの? 電気回路上の電流のシミュレーション?
- 557 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:58:18 ]
- 入力に対して隠れマルコフモデル(HMM)を使って確率を出すんですけど、
この例では3状態のHMMと2状態のHMMを使って最終的にendにたどりつくとこの 状態の確率が出力値となるんです。 で1つの移動に対して入力1フレームを正規分布によって評価し確率を出す。 その正規分布をHMMで評価するんです。 そのHMMには平均分散、移動確率とあるんですけど、 平均分散を正規分布で用いて確率をだして、移動確率をかけて 最終的な移動の確率となるんです。 前につくってもらったのが移動確率でのみの計算でした
- 558 名前:デフォルトの名無しさん [2007/11/15(木) 22:01:52 ]
- 神経衰弱を行うゲームを作成すること。
ただし、カードは52枚全て使用し、絵柄の 区別は無いものとする。 このプログラムをお願いします。(^_^)
- 559 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:02:55 ]
- すみません、どなたか>>489をお願いします。
自分でもあつかましいと承知しているのですが、 どうにも分からないので・・・。 コンパイラ名はVS2005のようです。 よろしくお願いします。
- 560 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:12:59 ]
- 557ですけど
頼んだのは移動してくる確率が2つだったらグリッドで計算できたんですけど 3つの場合どうすればいいのかわからなくて。 しかも下のやつも計算しなくてはならなくて。 なので質問させていただきました
- 561 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:30:13 ]
- >>543
>この(startから状態1への移動確率)X(重き)と >(状態1の状態確率)X(状態1から状態1への移動確率)X(重き)と、(状態11の状態確率)X(状態11 >から状態1への移動確率)X(重き)の和が状態1の状態確率となります。 状態1ってループしてるけど単純にこれでいいの? (状態1の状態確率)X(状態1から状態1への移動確率)X(状態1から状態1への移動確率)X(重き) ... とかは考えなくてもよし?
- 562 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:36:35 ]
- >>543
>>246 の問題だと矢印にくっつく数値(状態遷移確率)が固定だったのを 時間(移動回数)によって矢印にくっつく数値(状態遷移確率)を変化させたいと言う事でいい?
- 563 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:40:42 ]
- >>561
考えなくていいです。 >>562 そうです。 実際は入力に対して各HMMの1つの状態の平均分散から 正規分布により出力確率を出してそのHMMから移動確率を出して 確率X移動確率なんですけど 簡単のために、出力確率を重きとしてるわけです。
- 564 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:43:05 ]
- 移動確率を出す関数だけ。
enum states { START, FIRST, SECON, THIRD, TENTH, ELEVE, E_N_D }; enum states movProbMap( enum states from, enum states to ) { return from == START ? (to == FIRST ? 0.5 : to == TENTH ? 0.5 : 0.0) : from == FIRST ? (to == FIRST ? 0.6 : to == SECON ? 0.3 : to == ELEVE ? 0.1 : 0.0) : from == SECON ? (to == SECON ? 0.7 : to == THIRD ? 0.3 : 0.0) : from == THIRD ? (to == THIRD ? 0.8 : to == E_N_D ? 0.2 : 0.0) : from == TENTH ? (to == TENTH ? 0.6 : to == ELEVE ? 0.4 : 0.0) : from == ELEVE ? (to == ELEVE ? 0.7 : to == FIRST ? 0.2 : to == E_N_D ? 0.1 : 0.0) : 0.0; }
- 565 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:44:10 ]
- 激しく無意味だな。スマン無視してくれ。
- 566 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:47:07 ]
- >>564
これは一体何でしょう? 実数を返したいんじゃないの???
- 567 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:55:57 ]
- enum states -> double
で。
- 568 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:10:49 ]
- >>543
使い方は data.txt をリダイレクトするだけ lzh 内のファイル名間違えたけど気にしない ans478 < data.txt ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5268.lzh
- 569 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:32:51 ]
- >>568
ありがたいんですけど これちょっと使いかたわからなくて。 gcc ans478.cして実行のときになにか入力しないといけないんですか?
- 570 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:35:27 ]
- 本来なら
ans478 と打って実行するところを ans478 < data.txt のようにしてdata.txtを標準入力にリダイレクト
- 571 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:36:42 ]
- >>489
#include<stdio.h> int main(void){ int i, num, max=0; for(i=20071114;i<=20071114+6-1;i++){ scanf("%d", &num); if(num>max) max=num; } printf("%d\n", max); return 0; }
- 572 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:39:49 ]
- >>570
できました。。。 さっきできなかったのに。 ありがとうございます。 自分で作りなおしてから できなかったらこれも試してみます
|

|