- 締切済み
C++で乱数発生
C++で[0,1]区間を100等分した値、つまり0.00以上始まり1.00以下の乱数を発生させ、値ごとに何個現れたかをカウントするには、どうしたらよいのか教えて下さい。私はプログラミングの知識や本等一切ありません。できるだけ詳しく教えてほしいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2のプログラムを修正させていただきました。 ---------------------------------------------------------------- //using namespace std の時、以下のヘッダは省略できる #include <cstdio> #include <cstdlib> #include <ctime> using namespace std; int main(void){ int cnt[101] = { 0 }; int i=0, v; srand(time(0)); while(i < 100000) { v = 101.0 * rand()/ RAND_MAX; if(v == 101) continue; cnt[v]++; i++; } for (i = 0; i <= 100; i++) { printf("%3.2f\t%5d\n", i/100.0, cnt[i]); } }
- mac_res
- ベストアンサー率36% (568/1571)
何でプログラムの知識も本も無くってC++で乱数の度数表を作る方法を知りたいのでしょう。そのような人に詳しく説明する方法は無いので、0.00以上1.00未満のプログラム例を書きますから、自分で本を買って解読しなさい。 -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- #include <iostream> #include <time.h> int main(void) { double x; int cnt[100]; int i; srand(time(0)); for (i = 0; i < 100; i++) { cnt[i]= 0; } for (i = 0; i < 100000; i++) { x = (double) rand()/ RAND_MAX; cnt[(int)(x * 100)]++; } for (i = 0; i < 100; i++) { x = (double) i / 100.0; printf("%3.2f\t%5d\n",x,cnt[i]); } }
- acombun
- ベストアンサー率16% (16/99)
Rnd関数を使って0以上1未満の乱数を発生させてそれに1000かけて整数にして配列でカウントを取れば良いでしょう。 ここにプログラムを書くこともできますが、プログラミングの知識がないのでは説明し切れません。