ページ 11

識別子が見つかりませんでした

Posted: 2014年5月17日(土) 15:52
by クロー
初歩的っぽい質問ですみません。プログラムの本文は


#include <iostream> // cout の定義
#include <stdlib.h> // random, srandom の定義
#include <time.h> // time の定義
using namespace std;

void main() {
srandom(time(0)); // 乱数の出発点を現在時刻にする
int x = random();
cout << x << "\n";
}


で、ビルドするとエラーメッセージが


1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------
1> main.cpp
1>x:\myprojects\test\main.cpp(7): error C3861: 'srandom': 識別子が見つかりませんでした
1>x:\myprojects\test\main.cpp(8): error C3861: 'random': 識別子が見つかりませんでした
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========


と出ます。
#include <stdlib.h>は出来ていると思うのに、なぜエラーになるのでしょうか。
srandomを使ったサンプルを探してコピペしても動きません。

関係あるかわかりませんが環境は、windows8.1にVisualStudio2010ExpressのC++をインストールした後、
とくに設定は変えていないと思います。

Re: 識別子が見つかりませんでした

Posted: 2014年5月17日(土) 16:03
by みけCAT
srandom→srand
random→rand
の間違いではないでしょうか?
クロー さんが書きました:srandomを使ったサンプルを探してコピペしても動きません。
そのサンプルはどこにありますか?

Re: 識別子が見つかりませんでした

Posted: 2014年5月17日(土) 16:34
by クロー
返信が遅れてすみません。 このページに書いてあります。
http://ipl.sfc.keio.ac.jp/text/com-pro- ... c6_s5.html

自分もrandとsrandは知っていますが、random、srandomも存在しているように思います。
http://www.wakayama-u.ac.jp/~tokoi/lecture/seminar2/

Re: 識別子が見つかりませんでした

Posted: 2014年5月17日(土) 16:59
by Poco
srandom()、random()はPOSIXで定義されている関数で、Cの標準関数ではありません。
Windowsの開発環境ではMicrosoftが提供していないのではないでしょか。

Re: 識別子が見つかりませんでした

Posted: 2014年5月17日(土) 17:01
by みけCAT
randomとsrandomは仕様にないため実装されていない、という可能性があります。
http://port70.net/~nsz/c/c89/c89-draft.html#4.10.2

randの精度が不満なら、xorshiftメルセンヌ・ツイスタの利用を検討してはいかがでしょうか?

Re: 識別子が見つかりませんでした

Posted: 2014年5月17日(土) 17:24
by クロー
なるほど・・・Cの標準関数では無かったんですね。
疑問は解決しました。ありがとうございました!