C言語で乱数を発生させようと考えて最初のコードのようにかきました。
しかし、短い時間で繰り返しが起こるのでtime(NULL)で返される数値が変化しませんでした。
しかし、下のコードのようにかくと数値が変化しました。
下のようにかくとfor文の前で、timer = time(NULL)と代入してまっているので種が変わらずにxの値も変わらない気がします。
とても感覚的な質問になってしまっていますが、お答えできる方がいれば幸いです。
c
1コード 2#include <stdio.h> 3#include <stdlib.h> 4#include <time.h> 5 6int main(void){ 7 double x; /* 乱数を代入するための変数 */ 8 int i; /* for文で使う */ 9 time_t timer; 10 11 for(i = 0; i < 2; i++){ 12 timer = time(NULL); /* 現在の時間 */ 13 srand(timer); /* 種を変更 for文が繰り返されるごとに数値が変わることを期待*/ 14 x = (double)rand() / RAND_MAX; 15 printf("%f", x); 16 } 17 return 0; 18} 19 20 21 22 23```c 24コード
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
double x; /* 乱数を代入するための変数 /
int i; / for文で使う */
time_t timer;
timer = time(NULL); /* 現在の時間 */ srand(timer); /* 種を変更 */ for(i = 0; i < 2; i++){ x = (double)rand() / RAND_MAX; printf("%f", x); } return 0;
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/27 15:08