乱数の例題(3)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[乱数の例題(2)]]
* 乱数の例題(3) [#j745b0af]
さて、0.0 から 1.0 までの乱数は関数にしておいた方が便利だ...
まずは、C のプログラムについて関数にしてみる。関数名は my...
** C 版 myrand [#ac94b7e3]
/* randtest.c */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define REPEAT_COUNT 100
double
myrand()
{
return ((double)rand()) / ((double)RAND_MAX + 1.0);
}
int
main()
{
int i;
double r;
srand((unsigned int)time(0));
for(i = 0; i < REPEAT_COUNT; i++)
{
r = myrand();
printf("%lf\n", r);
}
return 0;
}
** C++ 版 [#kbcd668e]
さて、今の場合 program が短いので上記 C でも特に問題はな...
もし他の library と link する必要があって他でも myrand と...
使われていたらどうすればよいだろう?
C では、お互い気をつけましょうとか名前のルールを別途定め...
しか手段は無い。ましてや rand という関数名は使えない。
一方 C++ の方は名前空間で分けるという手段がある。この
場合でも、名前空間の名前が一致してしまう可能性はあるが、...
ずっと大きな範囲にすることができるので、名前の衝突回避は...
関数名を rand にすることすらできる。以下にその例を示そう。
/* randtest.cpp */
#include <iostream>
#include <cstdlib>
#include <ctime>
#define REPEAT_COUNT 100
namespace mylib
{
double
rand()
{
return ((double)std::rand()) / ((double)RAND_MAX + 1.0);
}
}
int
main()
{
int i;
double r;
std::srand((unsigned int)std::time(0));
for(i = 0; i < REPEAT_COUNT; i++)
{
r = mylib::rand();
std::cout << r << std::endl;
}
return 0;
}
終了行:
[[乱数の例題(2)]]
* 乱数の例題(3) [#j745b0af]
さて、0.0 から 1.0 までの乱数は関数にしておいた方が便利だ...
まずは、C のプログラムについて関数にしてみる。関数名は my...
** C 版 myrand [#ac94b7e3]
/* randtest.c */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define REPEAT_COUNT 100
double
myrand()
{
return ((double)rand()) / ((double)RAND_MAX + 1.0);
}
int
main()
{
int i;
double r;
srand((unsigned int)time(0));
for(i = 0; i < REPEAT_COUNT; i++)
{
r = myrand();
printf("%lf\n", r);
}
return 0;
}
** C++ 版 [#kbcd668e]
さて、今の場合 program が短いので上記 C でも特に問題はな...
もし他の library と link する必要があって他でも myrand と...
使われていたらどうすればよいだろう?
C では、お互い気をつけましょうとか名前のルールを別途定め...
しか手段は無い。ましてや rand という関数名は使えない。
一方 C++ の方は名前空間で分けるという手段がある。この
場合でも、名前空間の名前が一致してしまう可能性はあるが、...
ずっと大きな範囲にすることができるので、名前の衝突回避は...
関数名を rand にすることすらできる。以下にその例を示そう。
/* randtest.cpp */
#include <iostream>
#include <cstdlib>
#include <ctime>
#define REPEAT_COUNT 100
namespace mylib
{
double
rand()
{
return ((double)std::rand()) / ((double)RAND_MAX + 1.0);
}
}
int
main()
{
int i;
double r;
std::srand((unsigned int)std::time(0));
for(i = 0; i < REPEAT_COUNT; i++)
{
r = mylib::rand();
std::cout << r << std::endl;
}
return 0;
}
ページ名: