- ベストアンサー
srand48? drand48?
お世話になっております。 あるソフトウェアを使うに当たってMediSynというツールをコンパイルして 使うようにアドバイスをもらったのですが残念ながら力不足によりできないでいます。 もらったMedisynフォルダの中はcfg, cpp, headerで構成されていてそのうちのcppファイルを 全部コンパイルしてobjを作ればいいのかと思ってたのですが・・・ コンパイラをborlandとvisualstudio両方使ってもどちらもsrand48, drand48という関数がない? といったエラーが出てきてしまいます ググッたところいくつか該当する似たような問題は見つけられたのですがはっきりと解決方法は書かれていません。 それなら心当たりがあるという方、どうぞよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
どうやた2つの関数は UNIX OS が 用意している関数のようです。 2つとも乱数(ランダムな数値)を生成する関数で、drand48はdouble型の乱数を生み出し、srand48はdrand48を使う前に呼び出しdrand48が正しく動作する為に初期設定を行う関数のようです。この程度なら、自作でdoubleがたの乱数を生成する関数を作り、drand48が呼び出されている場所で置き換えて呼び出せば(srand48は無視で結構)正しく動作すると思います。もしよろしければ補足してください。
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
Cygwin 使ってみるとか.
srand48, drand48 両方とも標準関数じゃない。 ライブラリ関数なら、自分で実装しないと無理かもね。
ヘッダーファイル(多分header)にもコンパイルに必要な情報が入っていますよ。vs c++2008しか使ったことがありませんが、統合開発環境(オレンジ色のアイコンのアプリケーション)で[ファイル(メニューバー)]⇒[新規作成]⇒[プロジェクト]⇒適当にプロジェクト名入力して、cppファイル内に「main()」という記述があるなら[win32 コンソールアプリケーション]、「WinMain(略)」という記述があるなら[win32 プロジェクト]、(両方なかったら補足してくださればまた回答します)を選択して[OK]⇒アプリケーションウィザードが開き、[次へ]⇒「空のプロジェクト」にチェックをつけ、他変更せず[完了]を押してください。長くなりましたが、これでプロジェクトが作られます。ソリューションエクスプローラーの「ソースファイル」部分にcppファイルを追加、「ヘッダーファイル」部分にheaderを追加してください。あとはビルドするだけで、[ビルド(メニューバー)]⇒[ソリューションのビルド]でビルドできます。cfgは何かの設定ファイルのようですが、何でしょうね?読まないとわからないですね。失敗したりわからなかったりしたら補足していただければ幸いです。
参考まで。 http://www.math.meiji.ac.jp/~mk/labo/text/giji-ransuu/node6.html OSが違うんじゃない?
お礼
Linuxじゃなきゃダメなんでしょうか? 使っているのはwindowsxpです。 borlandもvisualstudioも最新のダウンロードしたてなのでそちらのほうに srand48,drand48という関数がかけてしまっているのかと思ってました。
補足
皆様たくさんのアドバイスありがとうございます。 できることならcygwinを通さずwindowsのままやりたかったので 以下のURL http://www001.upp.so-net.ne.jp/isaku/rand.html から引っ張ってきた記述をcppファイルがincludeしていたheaderにぶち込んだところ解決しました。 また上のURLの内容を見る限りdrand()関数はvisual C++では使えない?らしいです。 立て続けで申し訳ないのですが、今度は宣言に型が多すぎるというエラーが出て これは引っ張ってきた記述の中の static long long x=0x1234ABCD330E; ↑longが2つもある が原因のようです。しかしこのlong long以外で数字を表現できなさそうです。 それ以外はもう問題はないと思いますのでもう一知恵お貸しください。