RoboCup Junior Japan Rescue Kanto OB
2005~2013
2005~2013
今日は大学入って初めての工学実験がありました。
内容はプログラム、乱数というテーマで行われました。
具体的な流れとしては
1.C言語における乱数にはrand()という関数があるけど、あれは擬似乱数を生成してるだけで
しかも精度がお察しだから使っちゃいけないよね!
2.だったらもっといい乱数生成アルゴリズムはないの?
3.そうだ!日本人が考えたメルセンヌ・ツイスターがあるじゃないか!!!
という訳でメルセンヌ・ツイスター、所謂MTと呼ばれる乱数生成アルゴリズムの解説・・・
は飛ばしまして、実際にこれを伝ったプログラムの生成を行いました。
内容は解かせる気のない選択課題は置いておいて、
それ以外の必修課題は割りとポンポンと解けるものばかりであっさりと必修は終わらせました。
僕は特別プログラムが得意な方ではないし、タイピング速度もお察しなので、
僕が終わったということはほぼ全員が時間内に終わらせたことでしょう。
それで本題は選択課題なのですが、ある選択課題でこういった内容のものが出てきました。
「前課題のプログラムを出来る限り高速で実行できるものにせよ。」
MTのプログラムの改変はなしという条件がありましたが、まさかこんな課題が来るとは・・・
実行時間が高速になった場合は評価をプラスするとのことで、
50~150秒、30秒~50秒、教員の限界~30秒、~教員の限界
の4段階で追加得点が課されるとのことでした。
この実行時間が実時間なのか、システム上の計測時間なのかは不明ですが・・・
開発環境が統一されていなので(PCは統一されていますが)
正直あまり評定として意味があるとは思えないようにも思えた内容でした。
それで、僕なのですが、まず、高速化前の前課題のプログラムを実行してみます。
・・・42秒。
僕のプログラムは何が間違っているんでしょうか?
何もしてないはずなのに42秒出してしまいました。
結果に間違いはないし、何度見なおしてもおかしいところはありません。
周りに実行時間を確認したところ、「5分はかかるよバーカ」と一掃されました。
と、いうわけで。30秒切ってみることにしました。
ところが、まぁ色々と自分の知識とかあれやれこれやらぶち込んで見た結果
・・・41秒。
うん。これ無理!
という訳で42秒で諦めました。30秒切る人間はバケモノってことで。
そんな話をしていたら帰り道に編入仲間から
「最適化-01使った?」と聞かれました。
忘れてました、痴呆誕生の瞬間です。
最適化というものを根幹からすっかり抜けていました。そういえば指定してませんね。
ここでいう最適化というのは、普通にCをコンパイルすると、
実行時間とか使用メモリとかをあえて多めに取るように設計がされているのですが、
コンパイラに最適化設定をしてあげるとそこの部分を極限まで削ってくれるというものです。
勿論するとしないでは実行時間に大きな差が出てくるわけです。
・・・。
開いてる時間に学校のPCでもう一度試してきます。
というのが今日のネタです。それでは今日はこの辺で~。
(^・ω・)ノ RadiumProduction in RoboCup Junior
4/22追記:-O2でコンパイル掛けたら28.011sになりました。
-O3で試すともっと早くなる気もするけど面倒なのでもうういいです。
内容はプログラム、乱数というテーマで行われました。
具体的な流れとしては
1.C言語における乱数にはrand()という関数があるけど、あれは擬似乱数を生成してるだけで
しかも精度がお察しだから使っちゃいけないよね!
2.だったらもっといい乱数生成アルゴリズムはないの?
3.そうだ!日本人が考えたメルセンヌ・ツイスターがあるじゃないか!!!
という訳でメルセンヌ・ツイスター、所謂MTと呼ばれる乱数生成アルゴリズムの解説・・・
は飛ばしまして、実際にこれを伝ったプログラムの生成を行いました。
内容は解かせる気のない選択課題は置いておいて、
それ以外の必修課題は割りとポンポンと解けるものばかりであっさりと必修は終わらせました。
僕は特別プログラムが得意な方ではないし、タイピング速度もお察しなので、
僕が終わったということはほぼ全員が時間内に終わらせたことでしょう。
それで本題は選択課題なのですが、ある選択課題でこういった内容のものが出てきました。
「前課題のプログラムを出来る限り高速で実行できるものにせよ。」
MTのプログラムの改変はなしという条件がありましたが、まさかこんな課題が来るとは・・・
実行時間が高速になった場合は評価をプラスするとのことで、
50~150秒、30秒~50秒、教員の限界~30秒、~教員の限界
の4段階で追加得点が課されるとのことでした。
この実行時間が実時間なのか、システム上の計測時間なのかは不明ですが・・・
開発環境が統一されていなので(PCは統一されていますが)
正直あまり評定として意味があるとは思えないようにも思えた内容でした。
それで、僕なのですが、まず、高速化前の前課題のプログラムを実行してみます。
・・・42秒。
僕のプログラムは何が間違っているんでしょうか?
何もしてないはずなのに42秒出してしまいました。
結果に間違いはないし、何度見なおしてもおかしいところはありません。
周りに実行時間を確認したところ、「5分はかかるよバーカ」と一掃されました。
と、いうわけで。30秒切ってみることにしました。
ところが、まぁ色々と自分の知識とかあれやれこれやらぶち込んで見た結果
・・・41秒。
うん。これ無理!
という訳で42秒で諦めました。30秒切る人間はバケモノってことで。
そんな話をしていたら帰り道に編入仲間から
「最適化-01使った?」と聞かれました。
忘れてました、痴呆誕生の瞬間です。
最適化というものを根幹からすっかり抜けていました。そういえば指定してませんね。
ここでいう最適化というのは、普通にCをコンパイルすると、
実行時間とか使用メモリとかをあえて多めに取るように設計がされているのですが、
コンパイラに最適化設定をしてあげるとそこの部分を極限まで削ってくれるというものです。
勿論するとしないでは実行時間に大きな差が出てくるわけです。
・・・。
開いてる時間に学校のPCでもう一度試してきます。
というのが今日のネタです。それでは今日はこの辺で~。
(^・ω・)ノ RadiumProduction in RoboCup Junior
4/22追記:-O2でコンパイル掛けたら28.011sになりました。
-O3で試すともっと早くなる気もするけど面倒なのでもうういいです。
カレンダー
最新CM
カテゴリー
らじぷろ目次
らじぷろ検索機
最新記事
(01/01)
(08/27)
(04/29)
(01/01)
(11/20)
(09/06)
(09/04)
(08/09)
(08/06)
(07/27)
(05/29)
(03/15)
(01/01)
(05/07)
(01/11)
プロフィール
HN:
Luz
性別:
男性
アーカイブ