Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
MAnton
24 / 24 / 5
Регистрация: 21.04.2011
Сообщений: 141
#1

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

26.08.2013, 21:39. Просмотров 397. Ответов 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) выдает каждый раз одинаковое число. Подскажите, как это исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2013, 21:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Время для функции генерирующей случайные величины (C++):

Напишите пожалуйста Код программы генерирующей случайные величины но не функцией Rand
Напишите пожалуйста Код программы генерирующей случайные величины но не...

Равномерно распределенные случайные величины
Создать программу, в которой реализовать генерацию n равномерно распределенных...

Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы программы
1. Написать программу вычисления величины дохода по вкладу. Процентная ставка...

Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции
Составить программу решения поставленной задачи: Вычислить m значений функции...

Случайные значения для разных объектов
Здравствуйте. Я тут взялся за консольный морской бой, нарыл на форуме пару...

Случайные числа (координаты) для объекта OpenGL
Ребят, пишу курсовую на с++ + ogl. У меня в игре (при каждом ее запуске)...

5
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
26.08.2013, 21:42 #2
MAnton, может делать srand(time(NULL)) , а потом x0 = rand() ?
0
-=ЮрА=-
Заблокирован
Автор FAQ
26.08.2013, 21:50 #3
MAnton, чтобы rand генерировал псевдослучайные последовательности следует производить начальную установку генератора случайных чисел, как раз
Цитата Сообщение от Dani Посмотреть сообщение
srand(time(0))
это и делает
0
MAnton
24 / 24 / 5
Регистрация: 21.04.2011
Сообщений: 141
26.08.2013, 21:52  [ТС] #4
я хочу обойтись без rand() а написать полностью свой механизм псевдослучайных чисел
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 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]
0
-=ЮрА=-
Заблокирован
Автор 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;
}
1
26.08.2013, 21:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 21:56
Привет! Вот еще темы с решениями:

Случайные величины и случайные векторы
помогите с решением следующих вариантов

Корни квадратного уравнения независимые случайные величины, равномерно распределенные на интервале. Определить плотности вероятности для коэффициентов
Задача. Корни квадратного уравнения x^2+ax+b=0 независимые случайные величины,...

Случайные величины
Автобусы некоторого маршрута идут по расписанию каждые 20 минут. Найти...

Случайные величины
Здравствуйте! Кто может помогите, пожайлуста, в решении задач, заранее спасибо.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru