Используя программные решения для генерации случайных чисел не забывайте, что результатом является последовательность т.н. псевдослучайных чисел. Главная особенность такой последовательности - она всегда начинается одинаково и имеет период (через некоторое время значения начинают повторяться). Чем лучше сконструирован генератор, тем период больше.
Функция rand() возвращает целое случайное число в диапазоне от 0 до RAND_MAX. Значение RAND_MAX можно посмотреть в stdlib.h. Обычно оно равно 32767. Если в программе использовать только rand(), то последовательность всегда будет начинаться одинаково. Изменить порядок появления чисел из последовательности можно функцией srand. А для того, чтобы последовательность начиналась по-разному при каждом вызове srand и rand, обычно используют функцию time(0), возвращающую текущее системное время. Дополнительно можно посмотреть статью из MSDN (http://msdn.microsoft.com/en-us/library/398ax69y.aspx).
Листинг программы, приведенный ниже, генерирует последовательность случайных чисел от r_min до r_max.
#include <iostream> #include <stdlib.h> #include <ctime> using namespace std; void main() { int r_min=1,r_max=10,n=10; srand(time(0)); for (int i = 0; i < n; i++ ) { int u = (double)rand() / (RAND_MAX + 1) * (r_max - r_min)+ r_min; cout<<u<<endl; } }
|