Перейти к содержанию
СофтФорум - всё о компьютерах и не только

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


Рекомендуемые сообщения

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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");

}

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...