|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.12.2011, 18:46 | #1 |
Пользователь
Регистрация: 13.12.2010
Сообщений: 56
|
Рандомятся одинаковые числа
Здравствуйте!
Возникла маленькая неувязочка. Программа содержит десять потоков, в каждом из которых заполняется структура из чисел, которые генерируются случайным образом. Почему соответствующие числа десяти структур одинаковые. Пользуюсь функциями srand() и rand(). Что не так? Всем спасибо! |
10.12.2011, 18:58 | #2 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
srand() должна вызываться только один раз за время работы программы
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
10.12.2011, 19:25 | #3 |
Пользователь
Регистрация: 13.12.2010
Сообщений: 56
|
пробовал и так. Это ничего не меняет. Я не могу понять причины, почему все потоки рандомят одинаковые числа. Не могут же они физически выполнятся в одно и то же время.
|
10.12.2011, 19:30 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
показывайте код.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
10.12.2011, 19:39 | #5 |
Пользователь
Регистрация: 13.12.2010
Сообщений: 56
|
Код:
|
10.12.2011, 21:29 | #6 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
MasterSporta
Программа содержит десять потоков, в каждом из которых заполняется структура из чисел, которые генерируются случайным образом. Почему соответствующие числа десяти структур одинаковые. Пользуюсь функциями srand() и rand(). Что не так? srand инициализирует генератор только для текущего потока. При этом, даже если сделать инициализацию в каждом потоке, если потоки запускаются быстро, велика вероятность что time(NULL) выдаст одинаковые значения. Отсюда мораль: не использовать rand(). есть другие альтернативы, например rand_s() или Boost.Random
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
11.12.2011, 13:04 | #7 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
Rififi, спасибо
|
11.12.2011, 13:34 | #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 |