Неправильная генерация чисел 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)


Ответы (0 шт):