時間を使用した乱数
Posted: 2008年1月26日(土) 20:32
はじめまして。
c言語は始めてまだ1ヶ月弱です。
時間を利用した乱数を作っていたんですが、うまく動かないので質問させていただきます。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int rand3()
{
double ransuu;
int i;
srand((unsigned)time(NULL));
ransuu = rand()/(RAND_MAX+1.0);
i = 0;
if ( ransuu < (0.333333333333))
{
i = -1;
}
if ( ransuu >= (0.66666666666))
{
i = 1;
return i;
}
}
int main()
{
int l;
for(l=1;l<=10;l++)
{
printf("%d",rand3());
}
}
関数ひとつとメイン関数で表示して、現時刻より乱数の種の初期値を決め、-1、0、1のみを出力するという条件で書きました。
これをコンパイルすると結果は「0000000000」になってしまいます。処理する時間が短すぎるためにこうなってしまうのでしょうか?この条件を満たすためにはどうしたらよいでしょうか。
お忙しいところ申し訳ありません。ご返答よろしくお願いします。
OSはVISTA、コンパイラはVisual C++ 2008 Express Edition です。
c言語は始めてまだ1ヶ月弱です。
時間を利用した乱数を作っていたんですが、うまく動かないので質問させていただきます。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int rand3()
{
double ransuu;
int i;
srand((unsigned)time(NULL));
ransuu = rand()/(RAND_MAX+1.0);
i = 0;
if ( ransuu < (0.333333333333))
{
i = -1;
}
if ( ransuu >= (0.66666666666))
{
i = 1;
return i;
}
}
int main()
{
int l;
for(l=1;l<=10;l++)
{
printf("%d",rand3());
}
}
関数ひとつとメイン関数で表示して、現時刻より乱数の種の初期値を決め、-1、0、1のみを出力するという条件で書きました。
これをコンパイルすると結果は「0000000000」になってしまいます。処理する時間が短すぎるためにこうなってしまうのでしょうか?この条件を満たすためにはどうしたらよいでしょうか。
お忙しいところ申し訳ありません。ご返答よろしくお願いします。
OSはVISTA、コンパイラはVisual C++ 2008 Express Edition です。