本人用线性同余法编写了一个产生0,1之间均匀分布的随机数程序,明明都是正数和正数相乘,但结果却含有负值,始终搞不明白为什么,求指点。谢谢
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
void main()
{
FILE*fp;
fp = fopen("myrandom.txt", "w");
if (fp != NULL)
{
double n;
double ex=0;
double x0;
cout << "请输入要产生的随机数个数";
cin >> n;
cout << "请输入初始种子";
cin >> x0;
int x = x0;
double k = 0;
for (int i = 0; i < n; i++)
{
x = (x * 16807) % 2147483647;//进行线性同余的计算
double m = x / 2147483607.0;
k = k + m;
fprintf(fp, "%10.8f ", m);
cout << endl;
}
ex = k / n;
}
在某一次运算时x就变为负的了!