Нахождение значения Пи методом Монте-Карло. Вычисление неправильное или в коде ошибся? - C (СИ)
Формулировка задачи:
Всем привет! Задачка на нахождение значения ПИ по методу Монте Карло. В методичке сказано:
"You should use this expression for generating a random double between LO and HI
◦ LO + ((double) (rand()) /(((double) RAND_MAX)/(HI-LO));"
Сказано, сделано, вот только значения не сходятся у меня с правильными ответами!:
Enter the seed for the random number generator: 4
Enter the number of iterations to run: 10
The value of pi is 3.20000.
2. Enter the seed for the random number generator: -7
Enter the number of iterations to run: 2
The value of pi is 4.00000.
Будьте добры, подскажите где и в чем, я ошибся! Столько времени бьюсь с этой задачей!
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <string.h> int main() { int iterations=0; double x,y; int count=0; double z; double pi; int SEED = 0; printf("Enter the seed for the random number generator:"); scanf("%d",&SEED); printf("Enter the number of iterations used to estimate pi: "); scanf("%d",&iterations); /* инициализирую рандомные числа*/ srand(SEED); for (int i=0; i<iterations; i++) { x = (double)rand()/RAND_MAX; y = (double)rand()/RAND_MAX; z = x*x+y*y; if (z<=1) count++; } pi=(double)count/iterations*4; printf("The value of pi is %g \n",pi); return 0; }
Решение задачи: «Нахождение значения Пи методом Монте-Карло. Вычисление неправильное или в коде ошибся?»
textual
Листинг программы
y = (double)rand()/RAND_MAX; x = (double)rand()/RAND_MAX;
Объяснение кода листинга программы
- Импортируются необходимые библиотеки.
- Создается объект класса
Random
для генерации случайных чисел. - Переменная
y
инициализируется случайным числом в интервале от 0 до 1. - Переменная
x
инициализируется случайным числом в интервале от 0 до 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д