Использование датчика случайных чисел для формирования массива
Простейший ДСЧ работает следующим образом:
1) Берется большое число К и произвольное x0 [0,1].
2) Формируются числа х1=дробная_часть(х0*К);
х2=дробная_часть (х1*К); и т.д.
В результате получается последовательность чисел х0, х1, х2,. . . беспорядочно разбросанных по отрезку от 0 до 1. Их можно считать случайными, а точнее псевдослучайными. Реальные ДСЧ реализуют более сложную функцию f(x).
В C++ имеется специальная функция
int rand() – возвращает псевдослучайное число из диапазона 0 ... RAND_MAX=32767, описание функции находится в файле <stdlib.h>.
Пример 47. Формирования и печати массива с помощью ДСЧ:
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
#include <conio.h> // файл, где определена функция getch()
using namespace std;
void main()
{
int a[100];
int n;
cout<<"\nEnter the size of array:";
cin>>n;
for(int I=0; I<n; I++)
{
a[I]=rand()%100-50;
cout<<a[I]<<" ";
}
getch(); // ждать нажатия любой клавиши
}
В этой программе используется перебор массива по одному элементу слева направо с шагом 1.
Пример 33. Найти максимальный элемент массива.
void main()
{
int a[100];
int n;
cout<<”\nEnter the size of array:” ;cin>>n;
for(int I=0; I<n; I++) //ввод массива
{a[I]=rand()%100-50;
cout<<a[I]<<” “;
}
int max=a[0];
for(I=1;I<n;I++)
if (a[I]>max) max=a[I];
cout<<”\nMax=”<<max”;
}
В этой программе также используется перебор массива по одному элементу слева направо с шагом 1.
Пример 34. Найти сумму элементов массива с четными индексами.
void main()
{
int a[100];
int n;
cout<<”\nEnter the size of array:”;
cin>>n;
for(int I=0;I<n;I++)//ввод массива
{a[I]=rand()%100-50;
cout<<a[I]<<” “;
}
int Sum=0;
for(I=0;I<n;I+=2)
Sum+=a[I]; //элементы с индексами 0, 2, 4…
cout<<”\nSum=”<<Sum;
}
//Второй способ
for (I=0;I<n;I++)
if(I%2==0) Sum+=a[I];//элементы с индексами 0, 2, 4…
cout<<”\nSum=”<<Sum”;