как в Qt работает qsrand и qrand |
Здравствуйте, гость ( Вход | Регистрация )
как в Qt работает qsrand и qrand |
eldar85 |
9.4.2010, 0:42
Сообщение
#1
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
не могу понять как написать так чтобы выходила кстрока типа dfkjgi49vjodj55 - ну что то вроде этого))
что нужно вставить в функцию в асистенте эта функция нифига не описана... может кто использовал и знает?хотелось бы чтобы узнать как установить длину рандомного выражения и чтобы можно было и числа и буквы чтобы выдавал)) вот тут вроде числа получаются, но как сделать чтобы и буквы были и длинну можно было регулировать
вот нашел как число получить например от 1 до 100
но опять же мне нужно чтобы одной длинны был код, к примеру 123456789 из 9 чмсел ну и буквы нужны... хорошо бы и чисто буквенный рандом найти... вот придумал как сделать рандом из пяти букв, блин но опять же проблема))) он еще с буквами и символы туда впихивает
в итоге такая шняга: "qXIzd" "}_T|O" "JJ{kL" вроде кодировку ascii поставил от 65 до 90, по идее должны же только большие латинские буквы выдаваться, а тут один хрен такая жопа... проблема косяков была в том что хоть и пишешь
а он один хрен то 115 выдаст, то еще что нить))) в общем выходит за границы между 65 и 90... пришлось сделать проверку на соответствие
в итоге пять нормальных чисел выдает)) "TFPHV" "MRWJP" "BSQNE" "SEWMP" "PAWYB" "AWKFJ" вот так вполне уникальная хреновина получается))
"O3I1V7M9F8" "V1K8R5S4R7" "N5H3B4M8I1" "E8F1G8W7E0" "O8F5C2E7R4" "T8I1W5M3H2" "G1I8J0B7W2" "E4S7F1N3C3" "H1O3G0O3C8" "B3I7J6G9M2" "L9K4W9M2R5" но тут такая махина получилась, может все же есть универсальная рандомная функция с которой не придется так мозг греть, а просто задать в нее параметры типа [a-zA-Z0-9] к примеру и указть сколько символов чтобы выдала... Сообщение отредактировал eldar85 - 9.4.2010, 0:39 |
|
|
ufna |
9.4.2010, 0:56
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
Вы неправильно используете операцию "^".
К примеру: randInt2 = qrand()%48^57; что будет, если qrand() даст вам 5? Вам нужно что-то вида randInt2 = qrand()%25 + 65; Сообщение отредактировал ufna - 9.4.2010, 0:57 |
|
|
eldar85 |
9.4.2010, 10:00
Сообщение
#3
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
не правельно? если не сложно подскажите что дает тогда операция "^" и "+"??)
спасибо, понял как работает, это получается будет вызываться любой из 25 символово после 65 в таблище ascii))) большое спасибо)) |
|
|
ufna |
9.4.2010, 12:32
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
ну "^" - битовый xor. Причем здесь вообще эта операция? Она не гарантирует, что результат будет обязательно меньше "b"
|
|
|
eldar85 |
9.4.2010, 20:32
Сообщение
#5
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
почему то такой код
при каждом новом запуске программы выдает одинаковое число... если прога работает в цикле то выдаст разных вариантов, но при новом запуске программы все эти варианты тут же начинают повторяться в том же диапазоне... получается вызвал я в цикле три раза, вышло три разных числа, закрыл прогу, запустил снова и снова теже три числа один в один... не подскажите как бороться с этим??? |
|
|
BRE |
9.4.2010, 20:43
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
почему то такой код
при каждом новом запуске программы выдает одинаковое число... если прога работает в цикле то выдаст разных вариантов, но при новом запуске программы все эти варианты тут же начинают повторяться в том же диапазоне... получается вызвал я в цикле три раза, вышло три разных числа, закрыл прогу, запустил снова и снова теже три числа один в один... не подскажите как бороться с этим??? Посмотри на void qsrand ( uint seed ) |
|
|
eldar85 |
9.4.2010, 21:36
Сообщение
#7
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
да спасибо, подставил уже
и отлично все работает))) |
|
|
Гость_Гость_* |
12.4.2012, 11:10
Сообщение
#8
|
Гости |
int randInt;
QString myString; for(int i=0; i<5; i++) { randInt = qrand()%('Z'-'A'+1)+'A'; myString.append(randInt); } qDebug() << myString; |
|
|
Гость_Гость_Андрей_*_* |
28.3.2013, 12:14
Сообщение
#9
|
Гости |
Вот так описано использование в документации
http://www.developer.nokia.com/Community/W..._integers_in_Qt
Сообщение отредактировал ViGOur - 29.3.2013, 10:03
Причина редактирования: Отредактировал не нужную и огромную цитату
|
|
|
Текстовая версия | Сейчас: 25.11.2024, 18:39 |