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

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

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

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

26.08.2013, 21:39. Просмотров 361. Ответов 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 - C++
Напишите пожалуйста Код программы генерирующей случайные величины но не функцией Rand а как - нибудь по другому, очень буду признательна.

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

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

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

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

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

5
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 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
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
26.08.2013, 21:52  [ТС] #4
я хочу обойтись без rand() а написать полностью свой механизм псевдослучайных чисел
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 21:56
Привет! Вот еще темы с ответами:

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

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

Случайные величины - Теория вероятностей
1) Случайная величина Х, сосредоточенная на интервале , задана функцией распределения F(x)=1/16(x^2-4x+4). Найти вероятность что случайная...

Случайные величины - Теория вероятностей
Помогите разобраться с задачей. Если 1 пункт я знаю как решить, то 2 понятия не имею:( Формулу хотя бы подскажите:) Плотность...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
26.08.2013, 21:56
Ответ Создать тему
Опции темы

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