Неправильная генерация чисел C++
Нужно реализовать генерацию рандомных чисел с помощью линейного конгуретного метода, множитель(a) = 1103515245, прирост(c) = 12345, модуль(m). Вот код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <windows.h>
#include <random>
int main()
{
unsigned int arr[10000], count[100] = { 0 }, a = 1103515245, c = 12345;
unsigned long long m = pow(2, 31);
double arr1[100] = { 0 }, stat[100] = { 0 }, M = 0, d = 0;
arr[0] = time(0);
for (int i = 1; i < 10000; i++)
{
arr[i] = (a * arr[i - 1]+c) % m;
arr[i - 1] %= 100;
count[arr[i - 1]]++;
}
arr[999] %= 100;
printf(" Генерація випадкових чисел:\n");
for (int i = 1; i < 100; i++)
{
printf("\n %d= %d", i, count[i]);
}
printf("Статистична ймовірність випадкових чисел:\n");
int i = 0;
for (i = 0; i < 100; i++);
{
stat[i] = count[i] / 10000;
M += stat[i] * i;
}
printf("\n %d= %f", i, stat[i]);
printf("Частота інтервалів випадкових чисел:\n");
for (int i = 0; i < 100; i++)
{
d += pow((i - M), 2) * stat[i];
}
printf("Дисперсія= %f", d);
printf("Відхилення випадкових чисел= %f", pow(d,1/2.));
return 0;
}
P.S. сгенерированые числа выходят за диапазон (0-100)