![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 13.12.2010
Сообщений: 56
|
![]()
Здравствуйте!
Возникла маленькая неувязочка. Программа содержит десять потоков, в каждом из которых заполняется структура из чисел, которые генерируются случайным образом. Почему соответствующие числа десяти структур одинаковые. Пользуюсь функциями srand() и rand(). Что не так? Всем спасибо! |
![]() |
![]() |
![]() |
#2 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
![]()
srand() должна вызываться только один раз за время работы программы
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 13.12.2010
Сообщений: 56
|
![]()
пробовал и так. Это ничего не меняет. Я не могу понять причины, почему все потоки рандомят одинаковые числа. Не могут же они физически выполнятся в одно и то же время.
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
показывайте код.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 13.12.2010
Сообщений: 56
|
![]() Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
![]()
MasterSporta
Программа содержит десять потоков, в каждом из которых заполняется структура из чисел, которые генерируются случайным образом. Почему соответствующие числа десяти структур одинаковые. Пользуюсь функциями srand() и rand(). Что не так? srand инициализирует генератор только для текущего потока. При этом, даже если сделать инициализацию в каждом потоке, если потоки запускаются быстро, велика вероятность что time(NULL) выдаст одинаковые значения. Отсюда мораль: не использовать rand(). есть другие альтернативы, например rand_s() или Boost.Random
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
![]()
Rififi, спасибо
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
![]()
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вводится натуральное трехзначное число. Определить, есть ли среди цифр этого числа одинаковые (задание по Паскалю) | najdjel | Помощь студентам | 0 | 11.10.2011 17:59 |
Выявить одинаковые числа в таблице и удалить их | falcon-2005 | Microsoft Office Excel | 4 | 30.05.2011 14:59 |
даны натуральные трехзначные числа, нужно выбрать такие, запись которых содержит два одинаковые цифры. | TuuuZ | Помощь студентам | 2 | 28.12.2009 16:18 |
Есть ли одинаковые числа! | kloyn91 | Microsoft Office Excel | 3 | 29.10.2009 14:07 |
Одинаковые числа | artemavd | Общие вопросы Delphi | 10 | 14.11.2008 20:36 |