Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 14.09.2014
Сообщений: 18
1

Генератор случайных чисел

27.01.2015, 16:04. Показов 1347. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, написал вот такой генератор псевдослучайных чисел в диапазоне 0-99 и задался вопросом о его скорости. Я считываю время системы с помощью clock_gettime перед каждой генерацией числа, много ли она занимает времени? В смысле, делает ли это код сильно медленнее по сравнению с классическими генераторами, в которых сид берётся лишь единожды?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <ctime>
#include <cmath>
using namespace std;
 
int main()
    {
    int test, n = 0;
    struct timespec t;
    while(++ n != 500001)
        {
        clock_gettime (CLOCK_REALTIME, &t);
        test =  abs(int(sin(t.tv_nsec + test ) * t.tv_nsec )) % 100;
        }
    return 0;
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2015, 16:04
Ответы с готовыми решениями:

Генератор случайных чисел
Есть функция, генерирующая случайные целые числа с помощью линейного конгруэнтного метода. Нужно...

генератор случайных чисел
как реализовать генератор случайных чисел? чтобы можно было вводить два числа(например 56 и 519), и...

Генератор случайных чисел (с UI)
Я создал простенький генератор случайных чисел с Пользовательским Интерфейсом (GUI). Добавлено...

Генератор случайных чисел
Как задать минимальное и максимальное число при генерации случайных чисел?

2
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.01.2015, 17:54 2
Замерять нужно.
А так навскидку: в относительном соотношении катастрофические тормоза.

стандартный конгруэнтный рандом устроен примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    struct Dice
    {
        static int Random(int minVal, int maxVal) //<---- ну это уже высокоуровневое. 
        {                                      //Сюда смотреть не обязательно
            if(minVal>maxVal) 
            {
                const int tmp = minVal;
                minVal = maxVal;
                maxVal = tmp;
            }
            return RND()%(maxVal - minVal + 1) + minVal;
        }
    private: 
        static int GetTick() // <--- в качестве сида используется количество тиков процессора
        {
            int timeNOW;
            _asm
            {
                rdtsc;
                mov [timeNOW],eax;
            }
            return timeNOW;
        }
        static int RND() //<--- вас интересует конкретно вот эта часть
        { 
            static int seed = GetTick();
            return ( ((seed = seed * 214013L + 2531011L ) >> 16)& 0x7fff);
        }
    };
0
1 / 1 / 0
Регистрация: 14.09.2014
Сообщений: 18
27.01.2015, 19:23  [ТС] 3
Благодарю.
0
27.01.2015, 19:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2015, 19:23
Помогаю со студенческими работами здесь

Генератор случайных чисел
Как написать генератор случайных (пусть и псевдо) чисел, выдающий на выходе целые случайные числа...

Генератор случайных чисел
Помогите написать программу, которая генерировала бы случайные числа мультипликативным конгруэнтным...

Генератор случайных чисел
составить генератор случайных чисел, имеющий два члена - границы последовательности. Предоставить...

Генератор случайных чисел
Пишу курсовую по криптографии, для генерации ключей, естественно, нужен генератор случайных чисел....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru