Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
#1

Время для функции генерирующей случайные величины - C++

26.08.2013, 21:39. Просмотров 347. Ответов 5
Метки нет (Все метки)

я написал функцию которая генерирует случайные величины в промежутке [0,1]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
valarray<double> cRand::base_rnd(size_t N){
  valarray<double> v;
  v.resize(N);
  int x,y;
  int  x0 = time(0);
  x = fabs((a*x0 + c)%M);
  v[0] = double(x)/M;
  for(size_t i = 1;i<N;i++){
    y = fabs((a*x + c)%M);
    v[i] =double(y)/M;
    x = y;
  }
  return v;
}
Функция работает нормально, но если я скажем хочу вызвать эту функцию десять раз то она будет выдавать одинаковые числа, потому что time(0) выдает каждый раз одинаковое число. Подскажите, как это исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2013, 21:39     Время для функции генерирующей случайные величины
Посмотрите здесь:

C++ Время выполнения функции
C++ Случайные значения для разных объектов
C++ Напишите пожалуйста Код программы генерирующей случайные величины но не функцией Rand
C++ Время выполнения функции
Равномерно распределенные случайные величины C++
C++ Случайные числа (координаты) для объекта OpenGL
Составить программу решения поставленной задачи: Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функц C++
Составить программу решения поставленной задачи: Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функц C++
C++ Составить программу для вычисления величины S по формуле
C++ Составить программу для вычисления величины S по формуле
Вычисление средней величины для структур с определенным параметром C++
C++ Написать программу, определяющую следующие величины для прямоугольной матрицы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1264 / 622 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
26.08.2013, 21:42     Время для функции генерирующей случайные величины #2
MAnton, может делать srand(time(NULL)) , а потом x0 = rand() ?
-=ЮрА=-
Заблокирован
Автор FAQ
26.08.2013, 21:50     Время для функции генерирующей случайные величины #3
MAnton, чтобы rand генерировал псевдослучайные последовательности следует производить начальную установку генератора случайных чисел, как раз
Цитата Сообщение от Dani Посмотреть сообщение
srand(time(0))
это и делает
MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
26.08.2013, 21:52  [ТС]     Время для функции генерирующей случайные величины #4
я хочу обойтись без rand() а написать полностью свой механизм псевдослучайных чисел
castaway
Эксперт С++
4873 / 3012 / 370
Регистрация: 10.11.2010
Сообщений: 11,061
Записей в блоге: 10
Завершенные тесты: 1
26.08.2013, 21:53     Время для функции генерирующей случайные величины #5
Я придумал функцию лучше:
C++
1
2
3
double my_rand() {
    return rand() / (double)RAND_MAX;
}
Выдает величины в промежутке [0,1]

Добавлено через 15 секунд
Я придумал функцию лучше:
C++
1
2
3
double my_rand() {
    return rand() / (double)RAND_MAX;
}
Выдает величины в промежутке [0,1]
-=ЮрА=-
Заблокирован
Автор FAQ
26.08.2013, 21:56     Время для функции генерирующей случайные величины #6
Нерационально:
Цитата Сообщение от MAnton Посмотреть сообщение
x = fabs((a*x0 + c)%M);
* v[0] = double(x)/M;
* for(size_t i = 1;i<N;i++){
* * y = fabs((a*x + c)%M);
* * v[i] =double(y)/M;
* * x = y;
* }
Хотя бы так запиши
C++
1
2
3
4
5
6
7
8
9
valarray<double> cRand::base_rnd(size_t N)
{
    valarray<double> v;
    v.resize(N);
    int x = time(0);
    for(size_t i = 0; i < N;i++)
        x = (v[i] = fabs((a*x + c)%M) *1.0 / M);
    return v;
}
Yandex
Объявления
26.08.2013, 21:56     Время для функции генерирующей случайные величины
Ответ Создать тему
Опции темы

Текущее время: 14:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru