• ベストアンサー

乱数について

Visual Studio2008を使っています。 #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ int i; srand(time(NULL)); i=rand(); printf("%d\n",i); return 0; } 乱数を作るために上のようなプログラミングを作りました。 これを「ソリューションのビルド」すると 【warning C4244: '引数' : 'time_t' から 'unsigned int' への変換です。データが失われる可能性があります。】 と出ます。 このまま行っても乱数が出来るのですが どうしたらいいのでしょうか? 8行目を srand(time_t(NULL)); srand((unsigned)time(NULL)); と変えればいいのでしょうか? time_tでやると乱数が同じ値しか出てきません。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

time()関数の帰り値はtime_t型。 srand()関数の引数はunsigned int型。 なので、型が違う事のワーニングです。 unsigned int型にキャストするのが一般的です。

tokkotokon
質問者

お礼

回答ありがとうございます。 違いがようやく分かりました。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

> time_tでやると乱数が同じ値しか出てきません。 どんなコードを書かれたのですか? > プログラミングを作りました。 プログラムを作る(書く)ことをプログラミングといいます。 プログラミングを作る、とはいいません。

tokkotokon
質問者

お礼

>プログラムを作る(書く)ことをプログラミングといいます。 すいません、間違えてしまいました。 御指摘ありがとうございます。

関連するQ&A