рандом |
Здравствуйте, гость ( Вход | Регистрация )
рандом |
eldar85 |
15.7.2010, 15:36
Сообщение
#1
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
пользуюсь рандомом такого вида
но если его запускать в цикле то получается слишком много повторов одного и того же числа, так как он генерит новое число со следующей секунды... нет ли способа усовершенствовать как то этот подход чтобы повторы были минимальны? кто нить пользовался такой штукой? |
|
|
igor_bogomolov |
15.7.2010, 15:41
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Так ты qsrand(QTime(0,0,0).msecsTo(QTime::currentTime())); вынеси за тело цикла
|
|
|
eldar85 |
15.7.2010, 15:44
Сообщение
#3
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
хмм, точно))) благодарю)
|
|
|
Litkevich Yuriy |
15.7.2010, 18:54
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
eldar85, srand - инициализирует генератор (с чего начинать), а сам генератор - rand
|
|
|
DEADHUNT |
15.7.2010, 20:51
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
зачем использовать какие-то непонятные Qt конструкции, всё гораздо проще:
тем более в C++0x добавлена библиотека для генерации случайный величин которые имеют различные распределения: от нормального распределения до распределение студента, хи квадрат, гамма распределение и т.д. Сообщение отредактировал DEADHUNT - 15.7.2010, 20:52 |
|
|
Litkevich Yuriy |
16.7.2010, 0:39
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
DEADHUNT |
16.7.2010, 1:27
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
|
|
|
Litkevich Yuriy |
16.7.2010, 7:52
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
eldar85 |
2.8.2010, 12:59
Сообщение
#9
|
программист Группа: Участник Сообщений: 283 Регистрация: 2.1.2010 Из: Москва Пользователь №: 1348 Спасибо сказали: 0 раз(а) Репутация: 0 |
все же в многопоточности рандом работает не так как хотелось бы, точнее вообще показывает очень часто одно и тоже число в каждом потоке. запускаю я к примеру 10 потоков. запуск каждого потока производится каждые 0,1 сек.
объявлял в главной main функции и всюду, эфект почти один и тот же.генератор числа в небольшом диапазоне, оьычно от 100 до 200. но потоки прям один за другим выдают одно и тоже число, затем несколько потоков могут что то иное выдать, но это как исключение. как быть? |
|
|
SABROG |
2.8.2010, 14:15
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Оно и понятно, потоки наверняка почти одновременно запускаются, не успевает даже время пройти. Ты вызови один раз qsrand(), потом вызови qrand() для каждого потока, затем в каждом потоке вызови снова qsrand(), но уже со значениями полученными от предыдущего qrand'a().
|
|
|
Текстовая версия | Сейчас: 12.12.2024, 7:21 |