Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653

Random numbers

31.01.2013, 20:09. Показов 1991. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я запускаю в 4 потока функцию, которая рандомит число и выводит...а выводит оно мне 4 одинаковых числа...если ли идеи как это исправить?..)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2013, 20:09
Ответы с готовыми решениями:

Output total amount of numbers in the sequence (not summing -1 ) and than numbers themselves
The input contains a sequence of positive integers not exceeding 1000. The sequence ends with -1.Total amount of numbers is not more than...

Given a series of numbers, your task is to pick up some numbers
на acm.tju.edu.cn задача 2231 Нарушение правила п 5.19 Запрещено создавать темы в виде ссылок на задания или коды программ,...

Что не так с 'Random' или There is no overloaded version of 'Random' that can be called with these arguments
Доброго времени суток! Я с программированием на "Вы", поэтому очень прошу доходчиво объяснить, что не так с этой строчкой? Выводит ошибку:...

13
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.01.2013, 20:23
1) код в студию
2) попытаюсь угадать - вы при каждом вызове функции создаете генератор и инициализируете его текущим временем.
1
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
31.01.2013, 20:41  [ТС]
Цитата Сообщение от diagon Посмотреть сообщение
1) код в студию
2) попытаюсь угадать - вы при каждом вызове функции создаете генератор и инициализируете его текущим временем.
код в мейне
C++
1
2
3
4
boost::mutex io_mutex;
        boost::thread_group group;
        for (int i = 0; i < 4; ++i) {group.create_thread(boost::bind(&StartThread, boost::ref(io_mutex)));}
        group.join_all();
код старта потока
C++
1
2
3
4
5
6
void StartThread(boost::mutex& mutex)
{
    int max=GetRandomNumbers(boost::ref(mutex));
    boost::lock_guard<boost::mutex> lock(mutex);
    cout<<max<<endl;
}
код рандомящей функции
C++
1
2
3
4
5
6
7
8
9
10
int GetRandomNumbers(boost::mutex& mutex)
{
    boost::lock_guard<boost::mutex> lock(mutex);
    typedef boost::lagged_fibonacci607 RNGType;
    RNGType rng;
    boost::uniform_int<> one_to_six( 1, 600 );
    boost::variate_generator< RNGType, boost::uniform_int<> >dice(rng, one_to_six);
    int max = dice();
    return max;
}
рандом из С(srand) дает тот же результат...)
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.01.2013, 21:22
Цитата Сообщение от NeonLost Посмотреть сообщение
RNGType rng;
Дефолтный конструтор вызовет seed(), что эквивалентно seed(default_seed). При каждом вызове функции будет создаваться один и тот-же генератор.
1
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
31.01.2013, 21:57  [ТС]
Цитата Сообщение от soon Посмотреть сообщение
Дефолтный конструтор вызовет seed(), что эквивалентно seed(default_seed). При каждом вызове функции будет создаваться один и тот-же генератор.
предлагаешь создать статический клас и передавать в seed() разные значения при каждом запросе?..)
есть другие идеи?..)

может можно что-нибуть с этим сконструировать?

C++
1
2
srand(static_cast<unsigned>(std::time(0)));
tmp=rand() % max + min;
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.01.2013, 22:20
Цитата Сообщение от NeonLost Посмотреть сообщение
предлагаешь создать статический клас и передавать в seed() разные значения при каждом запросе?..)
Что есть статический класс?

http://liveworkspace.org/code/4x1Zy0
1
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
31.01.2013, 23:05  [ТС]
Цитата Сообщение от soon Посмотреть сообщение
Что есть статический класс?

http://liveworkspace.org/code/4x1Zy0
язык попутал...у статического класса можно пользоваться функциями и переменными не создавая объекта класса

я сделал так, только почему при каждом запуске одинаковые значения?
C++
1
2
3
4
5
6
7
8
9
10
int Random::GetRND()
{
    typedef boost::lagged_fibonacci607 RNGType;
    RNGType rng(seed);
    boost::uniform_int<> one_to_six(10000000, 100000000 );
    boost::variate_generator< RNGType, boost::uniform_int<> >dice(rng, one_to_six);
    int max = dice();
    seed++;
    return max;
}
вызываю так
C++
1
2
Random r;
int max=r.GetRND();
Добавлено через 5 минут
твой пример выдает ошибку в строке где #error(

Добавлено через 14 минут
сделал так, вроде всегда разные выдает...)
C++
1
2
3
4
5
6
7
8
unsigned long int Random::GetRND()
{
    boost::random::mt19937 rng(seed);
    boost::random::normal_distribution<> six(10000000,100000000);
    unsigned long int max = six(rng);   
    seed++;
    return max;
}
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.01.2013, 23:09
Цитата Сообщение от NeonLost Посмотреть сообщение
твой пример выдает ошибку в строке где #error(
Я там даже написал, что надо задефайнить BOOST_RANDOM или C_RANDOM. Добавьте одно из них в параметры компилятора
Цитата Сообщение от NeonLost Посмотреть сообщение
я сделал так, только почему при каждом запуске одинаковые значения?
Потому, что при каждом запуске создаются одинаковые генераторы.
1
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
31.01.2013, 23:31  [ТС]
Цитата Сообщение от soon Посмотреть сообщение
Я там даже написал, что надо задефайнить BOOST_RANDOM или C_RANDOM. Добавьте одно из них в параметры компилятора

Потому, что при каждом запуске создаются одинаковые генераторы.
...твое решение, я думаю, лучше работает...)
НО! если честно не понимаю, почему оно теперь разные значения дает...(
заметил строчку рандом девайс
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.01.2013, 23:42
Мне лень вникать, но, если данное утверждение трушно (а оно скорее всего трушно),
Цитата Сообщение от diagon Посмотреть сообщение
вы при каждом вызове функции создаете генератор и инициализируете его текущим временем
то все очень просто: между запусками функций проходит немного времени, так что системное время попросту не успевает измениться. Следовательно, генераторы получают одинаковое значение при инициализации.
random_device же не использует системное время.

Сишный рандом немного удобнее в этом плане - написал srand в начале мейна и не паришься.
1
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.01.2013, 23:53
Цитата Сообщение от diagon Посмотреть сообщение
а оно скорее всего трушно
Неа. ТС не инициализовал генераторы. Совсем.
1
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
01.02.2013, 00:20  [ТС]
как думаете, что быстрее отработает буст или С рандом?..)
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.02.2013, 15:23
Цитата Сообщение от NeonLost Посмотреть сообщение
как думаете, что быстрее отработает буст или С рандом?..)
На моих замерах сишный рандом в разы быстрее.
1
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
02.02.2013, 17:13
Как думаете, у кого показатели лучше? Дисперсия там, автокорреляция, да хотя бы и матожидание...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2013, 17:13
Помогаю со студенческими работами здесь

У меня непонятки с методами Math.random() и Random()
Задача : заполнить массив из 15 элементов случайным образом вещественными значениями х (-5 &lt;= x &lt;= 5) class Massiv { ...

Random, повторы при static Random(1 seed)
Добрый вечер. Использую private static readonly Random, так как крутится в цикле и если убрать static, будут повторы даже в указанием...

Когда твой Random совсем не Random
Мой код ведет себя весьма странно. У меня есть список экземпляров класса в котором (Уж простите что я такое наделал) есть экземпляр другого...

Random и объекты класса (pseudo random)
Всем привет. Есть класс: typedef unsigned int ui; class Player { private: ui health;

Переделать Math.random() в random()
public static void CompMove() { int x = (int) (Math.random() * 3), y = (int) (Math.random() * 3); while (field == '0' || field ==...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru