crossplatform.ru

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


  Ответ в qrand() дает всегда одинаково разные числа
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
RazrFalcon Дата 19.1.2011, 20:50
  Я так понимаю, это налог, если бы я просто сам проверил, циклом?
igor_bogomolov Дата 19.1.2011, 20:47
  а что стандартный с++ уже не подходит?
На Qt нет готовой функции.
RazrFalcon Дата 19.1.2011, 20:41
  Эээ...
а на qt?
igor_bogomolov Дата 19.1.2011, 20:33
 
Цитата(RazrFalcon @ 19.1.2011, 20:29) *
А как сделать что бы не повторялись числа?
чтобы от 0 до 100 к примеру прошло рандомно, без совпадений, а потом снова.
http://www.cplusplus.com/reference/algorithm/random_shuffle/
RazrFalcon Дата 19.1.2011, 20:29
  А как сделать что бы не повторялись числа?
чтобы от 0 до 100 к примеру прошло рандомно, без совпадений, а потом снова.
RazrFalcon Дата 24.12.2010, 16:52
  Большое спасибо. Работает.
Я поиском пользовался, уже парочка таких тем была, просто я думал нужно вместо qrand использовать qsrand и естествено оно не работало.

qsrand(QDateTime::currentDateTime().toTime_t());
а в тех темах было
qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()));
и с этим не компилило.
igor_bogomolov Дата 24.12.2010, 2:31
 
Цитата(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, 1:35
  к примеру 10, 16, 35, 78. при следующем запуске будут такие же.
как сделать, что вообще разные были? поток один.
задаю так:
int max=allFiles.count();
num=qrand() % max;

max всегда одинаково, практически
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 1.5.2024, 23:44