srand((unsigned) time(NULL));
for(~~~){
~~~rand()~~
}
と使って順番に1か0を出していくプログラムを書いてるんですが
いつも最初の部分が1になっていてデバッグして調べてみたら
同じではないのですが毎回似たような数字を出していました。
26392
26535
26682
26784
このようなかんじです。
(4回デバッガを使って1番最初に呼び出されたrand()の返した値を調べました)
rand()とはそういうものなのでしょうか?
それとも何か原因があるんでしょうか。
2回目以降は一見大丈夫そうなのでただ
rand();
と呼び出す無駄な行を書いてやりすごしたのですが、
もしこれが普通の現象であったら一般的な対策方法が知りたいです。
No.3ベストアンサー
- 回答日時:
srand の引数にシステム時間を使った場合、同じような時間に
実行すると値の変化が少ないために 1回目の rand の値が似た
ような値になります。これは rand の仕様というか癖です。
これを防ぐために、最初に rand を何回か呼び出しておく、
というのは、わりと一般的な対策です。
回答ありがとうございます。
やっぱりそういう現象が一般に起こるんですね。
>>これを防ぐために、最初に rand を何回か呼び出しておく、
>>というのは、わりと一般的な対策です。
そうなんですね。勉強になりました。
1回でなく数回呼び出してから使うようにしたいと思います。
ありがとうございました。
No.2
- 回答日時:
srand とか rand とかがどのように実装されているかがわからないのであまり一般論としてどうこう言えるものでもないけど, 「
最初のうちはどうしても srand で与えた初期値に強く依存する値が出るので何回か rand を呼び出しておいた方がいい」ってのはどこかで見た気がする.お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
ラジオボタンの値の取得につい...
-
フォームを開くときに、コンボ...
-
DataGridView 複数行同時変更...
-
大きな数の乱数を作るには
-
C言語でCLAMP(a,b,c)
-
VB6.0-整数と余りを求める
-
C#で動的にコントロールを取得...
-
PerlからCへの値の受け渡し方
-
関数で複数の値を戻り値として...
-
コンピュータ言語で変数って何...
-
1つ前の値を変数に保存する方法
-
足して100になるような乱数のア...
-
世界のナベアツ
-
VBA コンボボックスの値をスピ...
-
フリーランタイマーの時間差分...
-
コンボボックスの名前を変数に...
-
VBAで配列のNULL判定
-
C言語(DXlib)での音ゲーについ...
-
【C++/CLI】コンボボックスの値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
VB6.0-整数と余りを求める
-
足して100になるような乱数のア...
-
VBAの定数の使い方で、計算値を...
-
DWORDって
-
世界のナベアツ
-
VBAで配列のNULL判定
-
C#で動的にコントロールを取得...
-
数字の位ごとの値を表示するプ...
-
long型のランダムな値を返す方法
-
UWSCのcallについて
-
フリーランタイマーの時間差分...
-
1つ前の値を変数に保存する方法
-
VB6でのLog
-
C言語でCLAMP(a,b,c)
-
DataGridView 複数行同時変更...
-
コンボボックスの名前を変数に...
-
バッチファイルで正規表現を使...
おすすめ情報