crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> qrand() дает всегда одинаково разные числа
RazrFalcon
  опции профиля:
сообщение 24.12.2010, 1:35
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


к примеру 10, 16, 35, 78. при следующем запуске будут такие же.
как сделать, что вообще разные были? поток один.
задаю так:
int max=allFiles.count();
num=qrand() % max;

max всегда одинаково, практически
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 24.12.2010, 2:31
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(assistant)
void qsrand ( uint seed )
Thread-safe version of the standard C++ srand() function.
Sets the argument seed to be used to generate a new random number sequence of pseudo random integers to be returned by qrand().
The sequence of random numbers generated is deterministic per thread. For example, if two threads call qsrand(1) and subsequently calls qrand(), the threads will get the same random number sequence.
This function was introduced in Qt 4.2.
See also qrand().

т.е. необходимо сначала инициализировать seed перед использованием qrand
qsrand(QDateTime::currentDateTime().toTime_t());


P.S. Не забываем следующий раз пользоваться поиском по форуму, прежде чем создать тему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 24.12.2010, 16:52
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Большое спасибо. Работает.
Я поиском пользовался, уже парочка таких тем была, просто я думал нужно вместо qrand использовать qsrand и естествено оно не работало.

qsrand(QDateTime::currentDateTime().toTime_t());
а в тех темах было
qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()));
и с этим не компилило.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 19.1.2011, 20:29
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


А как сделать что бы не повторялись числа?
чтобы от 0 до 100 к примеру прошло рандомно, без совпадений, а потом снова.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 19.1.2011, 20:33
Сообщение #5


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(RazrFalcon @ 19.1.2011, 20:29) *
А как сделать что бы не повторялись числа?
чтобы от 0 до 100 к примеру прошло рандомно, без совпадений, а потом снова.
http://www.cplusplus.com/reference/algorithm/random_shuffle/
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 19.1.2011, 20:41
Сообщение #6


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Эээ...
а на qt?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 19.1.2011, 20:47
Сообщение #7


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


а что стандартный с++ уже не подходит?
На Qt нет готовой функции.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 19.1.2011, 20:50
Сообщение #8


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Я так понимаю, это налог, если бы я просто сам проверил, циклом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 17:14