[РЕШЕНО] qrand и qsrand.., Ускорение времени)) |
Здравствуйте, гость ( Вход | Регистрация )
[РЕШЕНО] qrand и qsrand.., Ускорение времени)) |
breeve |
29.12.2009, 15:54
Сообщение
#1
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Вот небольшой код:
Меня интересует такой вопрос. Может ли случайное значение вычислять быстрее чем каждую секунду? Если может то как это сделать? Сообщение отредактировал breeve - 29.12.2009, 15:55 |
|
|
BRE |
29.12.2009, 16:07
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
А у тебя этот код выполняется 8 секунд?
|
|
|
breeve |
29.12.2009, 19:11
Сообщение
#3
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
А у тебя этот код выполняется 8 секунд? Почему восемь? Нет, это кусок кода. Если надо могу кинуть весь. А 8 это значит кол-во созданных символов. Идея такова - сделать генератор паролей. Нажимаешь кнопку он тебе создает пароль.. Так вот поскольку каждое новое число может быть сгенерированно не чаще одной секунды, и если ты нажимаешь на кнопку Generate чаще, то программа начинает тупить. |
|
|
BRE |
29.12.2009, 20:36
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
breeve |
29.12.2009, 20:41
Сообщение
#5
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Почему новое число не может быть сгенерированно чаще одного в секунду? Откуда это ограничение? ну во-первых я нажимаю на кнопку и оно чаще секунды не генерируется.. а во вторых time(NULL) это что? это отсчет от какого-то там года(70-го кажется) и оно меняется каждую секунду.. Сообщение отредактировал breeve - 29.12.2009, 20:42 |
|
|
BRE |
29.12.2009, 20:49
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
qsrand вызывай один раз в начале программы, можно с текущим временем например.
А потом уже в программе вызываешь qrand и не обязательно раз в секунду. |
|
|
breeve |
29.12.2009, 21:14
Сообщение
#7
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
qsrand вызывай один раз в начале программы, можно с текущим временем например. А потом уже в программе вызываешь qrand и не обязательно раз в секунду. давай я код кину ты компильнешь и посмотришь можно ли чаще или нет)) Сообщение отредактировал breeve - 29.12.2009, 21:15 |
|
|
BRE |
29.12.2009, 21:16
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Давай.
|
|
|
breeve |
29.12.2009, 21:22
Сообщение
#9
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
main.cpp #include <QtGui> #include "pass.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Pass w; w.setFixedSize(w.minimumSize().width(), w.minimumSize().height()); w.show(); return a.exec(); } pass.cpp #include "pass.h" //#include "inputDialog.h" Pass::Pass(QWidget *parent) : QWidget(parent) { lbl = new QLabel("&Password:"); ptxt = new QLineEdit; lbl->setBuddy(ptxt); generate = new QPushButton("Generate"); settings = new QPushButton("Settings"); vLay = new QVBoxLayout; hLay = new QHBoxLayout; hLay->addWidget(generate); hLay->addWidget(settings); vLay->addWidget(lbl); vLay->addWidget(ptxt); vLay->addLayout(hLay); setLayout(vLay); connect(settings, SIGNAL(clicked()), SLOT(slotSettingsClicked())); connect(generate, SIGNAL(clicked()), SLOT(slotGenerate())); } void Pass::slotSettingsClicked() { //InputDialog input; //input.show(); } void Pass::slotGenerate() { QString alf = "ABCDEFGHIJKLMNOPRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; QString str; int a = 0; qsrand(time(NULL)); for(int i = 0; i < 8; i++) { a = qrand() % 62; qDebug() << a; str[i] = alf[a]; } ptxt->clear(); ptxt->insert(str); } pass.h #ifndef PASS_H #define PASS_H #include <QtGui> class Pass : public QWidget { Q_OBJECT public: QLabel* lbl; QLineEdit* ptxt; QPushButton* generate; QPushButton* settings; QVBoxLayout * vLay; QHBoxLayout * hLay; Pass(QWidget *parent = 0); ~Pass() {}; public slots: void slotSettingsClicked(); void slotGenerate(); }; #endif // PASS_H Ааа... Я вообщем понял в чем проблема)) Надо было просто srand не в слоте писать а в конструкторе.. Но все равно и на том спасибо.. |
|
|
Litkevich Yuriy |
29.12.2009, 21:25
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 21.12.2024, 20:05 |