Jump to content

Случайные числа


Recommended Posts

Как использовать генератор случайных чисел в с++(в определенном интервале)? Знаю, что для этого применяется rand, но какую библиотеку надо подключить? А то у меня выдает ошибку rand undeclared identifier

Link to comment
Share on other sites

Как использовать генератор случайных чисел в с++(в определенном интервале)? Знаю, что для этого применяется rand, но какую библиотеку надо подключить? А то у меня выдает ошибку rand undeclared identifier

насчет библиотеки неподскажу наверно math, а чтобы в определенном диапазоне к примеру 30-78

береш rand(48)+30 один из самых простых способов

Link to comment
Share on other sites

kostik012:

Вот для примера программка, генерирующая случайные (точнее, конечно, псевдослучайные) числа от 50 до 79 включительно (писал на DEV-C++). Выдает 10 таких чисел, для закрытия окна надо ввести 0 (или любое число).

#include <iostream>

#include <stdlib.h>

#include <time.h>

int main()

{

int j,k;

srand( (unsigned)time( NULL ) );

for(int i=0; i<10; i++) { j=rand()%30+50; cout << j<<"\n"; } ;

cout << "for exit enter 0 ";

cin >> k;

}

P.S. Посмотрел еще раз и решил, хотя это не слишком важно, кое-что ненужное из примера выкинуть, вот его вторая версия:

#include <iostream>

#include <stdlib.h>

#include <time.h>

void main()

{

srand(unsigned(time(NULL)));

for(int i=0; i<10; i++) cout << rand()%30+50 <<"\n";

system ("pause");

}

Edited by Тролль
Link to comment
Share on other sites

  • 1 year later...

Там зашит конкретный алгоритм.

То-есть последовательность чисел всегда будет одинаковой,

все зависит только от места из которого ти начнеш.

Поетому ети числа не случайные - а псевдослучайные

Они просто соответствуют требованиям последовательности случайных чисел.

Link to comment
Share on other sites

Добавлю, что существует математическая теория функций, выдающих псевдослучайные числа. Как правило, используется так называемый линейный конгруентный метод генерации псевдослучайных чисел, потому что он самый быстрый. Каждое следующее псевдослучайное число вычисляется по предыдущему функцией x=(ax+c)%m, где a,c,m - заранее заданные константы. Чтобы еще больше приблизить статистические параметры получаемой псевдослучайной последовательности к параметрам "идеальной" чисто случайной последовательности, при этом в качестве выдаваемого псевдослучайного числа часто берутся только старшие биты результата. Выбор "хороших" констант определяется теорией, подробно теория изложена у Кнута в его трехтомнике "Искусство программирования" (фактически это учебник алгоритмов). Эти константы "зашиты" в стандартную функцию rand, в разных компиляторах они могут быть разными. Поскольку начальное значение x перед первым вызовом функции обычно нуль, последовательность псевдослучайных чисел у функции rand будет всегда одна и та же, если не менять начальное значение для rand при каждом запуске программы. Это начальное значение для rand может быть установлено отдельной функцией srand, а чтобы оно каждый раз было другим, в качестве аргумента функции srand обычно используется значение текущего времени.

Edited by Тролль
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...