- ベストアンサー
乱数を発生させるプログラムを教えてください。
タイトルのままなのですが、1から100までの乱数を発生させるプログラムを知りたいです。 乱数をxとおくと、xの値は、0<x<1の範囲内でお願いします。 C言語で、rand関数を用いて、どうかお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
/* 0<x<1の乱数を100個作る */ #include <stdio.h> #include <stdlib.h> #include <sys/timeb.h> void main(void){ int i; double r; struct timeb tm; ftime(&tm); srand(tm.millitm); for(i=0;i<100;i++){ r=(double)rand()/RAND_MAX; if(r==0.0 || r==1.0){ i--; continue; } printf("%f\n",r); } }
その他の回答 (5)
- Trick--x--
- ベストアンサー率26% (19/72)
#2の方の方法を忠実にやると、質問者さんのようなソースにはならないのですが…… 0<=x<=1; x = rand()/RAND_MAX(i); この2行がおかしいのと #include <time.h> の意味がありませんね。(勿論、rand()を使う時に何らかの形で利用するのでインクルードしているのですが……)
お礼
ありがとうございます。しっかりみてやってみます。
- Trick--x--
- ベストアンサー率26% (19/72)
0<=x<=1; ……? こんなこと書けたっけ?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>1から100までの乱数 >乱数をxとおくと、xの値は、0<x<1の範囲内 範囲が両方の条件を満たさないと思います
補足
すいません。間違えました。 100回繰りかえして、0<x<1の範囲内の乱数を発生させたいです。 申し訳ありませんでした。どうかお願いします。
1の参考URLは整数の乱数ですが, 小数の場合は, (double)(rand())をRAND_MAX(rand()が返す最大の値)で割れば,0.0<=x<=1.0の間に収められます.
お礼
2度もありがとうございます。 ただ実行まで結びつかないので、もう少し詳しく教えてもらえればありがたいです。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int count; double x,i; 0<=x<=1; for (count = 0 ; count < 10 ; count++) { x = rand()/RAND_MAX(i); printf("%d\n" , count/(float)i); } return 0; } 今のとここのように考えています。 でもだめみたいです。
Webを検索すれば参考URLのようなページが見つけられるはずですが...
お礼
お返事ありがとうございます。 ページを見て見ました。なかなか参考になります。 ありがとうございます。
お礼
ありがとうございます。できました。