乱数
Re:乱数
略語、誤字はできるだけさけてください・・・。
>愛田 ⇒ 間
>吐く区間 ⇒ 各区間
>Cプロ ⇒ Cでプログラミング ?
それはいいとして。
少しでもグーグルで検索してみようとしてください。
「C 乱数」と検索してちょっと読むだけで、いろんなサンプルが見つかるものです。
http://www005.upp.so-net.ne.jp/h-masuda ... and01.html
以下のコードはこちらのサイト様からコードを利用させていただき、ちょこっと編集したものです。
①については、
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int n, rnd;
srand(time(NULL)); /* 乱数の初期化 */
for(n = 0; n < 1000; ++n){
rnd = rand()%101; /* 乱数の取得 */
printf("%d\n", rnd); /* 乱数の表示 */
}
return 0;
}
平均値については、すべてのデータを配列に保存しておき、すべてを足し、足した数で割ったものを double 等に足せばOKです。
たとえば、
int data[100];
に乱数が保存されているなら
int sum = 0;
for(n = 0; n < 100; ++n){
sum += data[n]
}
double ave = (double)sum/100;
みたいな形になります。
(一部コーディングミスで修正しました。)
>愛田 ⇒ 間
>吐く区間 ⇒ 各区間
>Cプロ ⇒ Cでプログラミング ?
それはいいとして。
少しでもグーグルで検索してみようとしてください。
「C 乱数」と検索してちょっと読むだけで、いろんなサンプルが見つかるものです。
http://www005.upp.so-net.ne.jp/h-masuda ... and01.html
以下のコードはこちらのサイト様からコードを利用させていただき、ちょこっと編集したものです。
①については、
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int n, rnd;
srand(time(NULL)); /* 乱数の初期化 */
for(n = 0; n < 1000; ++n){
rnd = rand()%101; /* 乱数の取得 */
printf("%d\n", rnd); /* 乱数の表示 */
}
return 0;
}
平均値については、すべてのデータを配列に保存しておき、すべてを足し、足した数で割ったものを double 等に足せばOKです。
たとえば、
int data[100];
に乱数が保存されているなら
int sum = 0;
for(n = 0; n < 100; ++n){
sum += data[n]
}
double ave = (double)sum/100;
みたいな形になります。
(一部コーディングミスで修正しました。)

Re:乱数
>学習は、乱数を作るプログラムを触る感じでしかやっておりません。
>なので、読み込みなどもいまいちわかりません。
>scanfなどは使わないのでしょうか?
scanf は、コマンドからの入力です。
ファイルからの入力の場合、いくつかの方法があります。
(ファイルへの出力も同様)
詳しくは、グーグルで「ファイル入出力 C」などで調べてください。
聞いたところ、まだ初めて間もないようなので、先ほどのコードが理解できないようならば
先にC言語入門サイトをこなすことをおすすめします。
入門サイトの中には、ファイル入出力も教えてくれるものがあるとおもいますよ。
なにより、こういうサイトは順番に説明してくれているでしょうから。
>なので、読み込みなどもいまいちわかりません。
>scanfなどは使わないのでしょうか?
scanf は、コマンドからの入力です。
ファイルからの入力の場合、いくつかの方法があります。
(ファイルへの出力も同様)
詳しくは、グーグルで「ファイル入出力 C」などで調べてください。
聞いたところ、まだ初めて間もないようなので、先ほどのコードが理解できないようならば
先にC言語入門サイトをこなすことをおすすめします。
入門サイトの中には、ファイル入出力も教えてくれるものがあるとおもいますよ。
なにより、こういうサイトは順番に説明してくれているでしょうから。
Re:乱数
とりあえず一つ目
#include <algorithm> #include <ctime> #include <fstream> #include <iostream> #include <iterator> #include <boost/random.hpp> void generate(std::ostream& ostr) { boost::mt19937 gen(static_cast<unsigned long>(time(0))); boost::uniform_smallint<> dst(0, 100); boost::variate_generator< boost::mt19937&, boost::uniform_smallint<> > rand(gen, dst); std::generate_n(std::ostream_iterator<int>(ostr, "\n"), 1000, rand); } int main(int argc, char* argv[/url]) { std::ostream* ostr; if (argc < 2) { ostr = &std::cout; } else { static std::ofstream ofs(argv[1]); ostr = &ofs; } generate(*ostr); }いつものようにコメントなしですので、自分で解析してください。
Re:乱数
ありがとうございます。
最大値、最小値までできました。
ここに平均値と分布を加えたらよいと思うのですが、どこにどのような文字を入れればいいのでしょうか?
よろしくお願いいたします
#include <stdio.h>
#include <stdlib.h>
#define N 2000
int main(void)
{
FILE *fp;
int data[N], i, min, max;
fp=fopen("random.txt", "r");
min=max=data[0];
for (i=0; i<N; i++) {
if (min > data) min=data;
if (max < data) max=data;
printf("%d ", data);
if (i % 10 == 9) printf("\n");
fprintf(fp, "%d\n", data);
}
printf("Min value is %d.\n", min);
printf("Max value is %d.\n", max);
fclose(fp);
return 0;
}
最大値、最小値までできました。
ここに平均値と分布を加えたらよいと思うのですが、どこにどのような文字を入れればいいのでしょうか?
よろしくお願いいたします
#include <stdio.h>
#include <stdlib.h>
#define N 2000
int main(void)
{
FILE *fp;
int data[N], i, min, max;
fp=fopen("random.txt", "r");
min=max=data[0];
for (i=0; i<N; i++) {
if (min > data) min=data;
if (max < data) max=data;
printf("%d ", data);
if (i % 10 == 9) printf("\n");
fprintf(fp, "%d\n", data);
}
printf("Min value is %d.\n", min);
printf("Max value is %d.\n", max);
fclose(fp);
return 0;
}
Re:乱数
これは友達に見せてもらったプログラムですか?
自分ではどこまで理解出来ていますか?
一つ一つ意味を理解していきましょう。
上のプログラムに一行ずつ詳しく注釈を書いていってみてください。
その注釈を見ればどこで勘違いしているか解ると思います。
また、全ての行を理解すれば今の疑問も晴れるはずです。
まずはなるべく詳しくプログラムコードに注釈を書いていってみてください。
例えば・・
// Nを2000と定義する ← ×
#define N 2000
// ○○の△△としてNを2000と定義する ← ○
#define N 2000
// fpを用意する ← ×
FILE *fp;
// ファイルからデータを読み込むため、ファイルポインタfpをFILE*型で用意する ← ○
FILE *fp;
こんな感じです
自分ではどこまで理解出来ていますか?
一つ一つ意味を理解していきましょう。
上のプログラムに一行ずつ詳しく注釈を書いていってみてください。
その注釈を見ればどこで勘違いしているか解ると思います。
また、全ての行を理解すれば今の疑問も晴れるはずです。
まずはなるべく詳しくプログラムコードに注釈を書いていってみてください。
例えば・・
// Nを2000と定義する ← ×
#define N 2000
// ○○の△△としてNを2000と定義する ← ○
#define N 2000
// fpを用意する ← ×
FILE *fp;
// ファイルからデータを読み込むため、ファイルポインタfpをFILE*型で用意する ← ○
FILE *fp;
こんな感じです