Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Проблемы с динамическим массивом внутри класса  (Прочитано 44200 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #30 : 29-06-2008 03:09 » 

Finch, не забывай, что коллега не позаботился от инициализации массива Chromos пустыми значениями перед тем как заполнять его данными, так что если вызовется деструктор после неудачного конструирования, то есть большие шансы огрести по полной программе.

впрочем лично я сильно сомневаюсь в том, что среднестатистическому программисту может понадобится столько памяти, что полетит bad_alloc.
« Последнее редактирование: 29-06-2008 03:14 от LogRus » Записан

Странно всё это....
romeo
Гость
« Ответ #31 : 29-06-2008 07:23 » 

Еще кто-нибудь может подсказать почему у меня при вызове функции-члена FillRandChrom генерируется одна и та же случайная последовательность для разных экземпляров?  По идее при каждом вызове функции должна генерироваться своя последовательность, тем более, что srand проинициализирована функцией времени. ctime я подключил
Код:
void Chromosome::FillRandChrom()	//заполнение хромосомы случайными значениями генов
{
srand(time(0));
for (int i=0; i<GeneQty; i++)
for (int j=0; j<GeneSize; j++) Chromos[i][j]=(bool)(rand()%2);
}
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #32 : 29-06-2008 08:09 » 

почему одинаковая - не знаю, но вот это

(bool)(rand()%2);

не гарантирует 50/50

если надо примерно 50/50 , то так сделай:

(bool) (RAND_MAX-rand()/2 > 0)
Записан

romeo
Гость
« Ответ #33 : 29-06-2008 08:55 » new

Не знай-не знай, так вообще все единицы генерируются
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #34 : 29-06-2008 10:17 » 

Может, ( (double)rand() ) / RAND_MAX > 0.5?
« Последнее редактирование: 29-06-2008 10:19 от Вад » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #35 : 29-06-2008 10:45 » 

гы,сорри, наоборот написал, надо было так
(bool) (rand()-RAND_MAX/2 > 0)

или
(bool) (rand() > RAND_MAX/2)


(вот что значит - не тестировать Жаль )
« Последнее редактирование: 29-06-2008 10:47 от Алексей1153++ » Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #36 : 29-06-2008 14:46 » 

Да, последний вариант пооптимальнее с точки зрения вычислений Улыбаюсь
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #37 : 30-06-2008 03:34 » 

оптимальней вот так Улыбаюсь
rand() > (RAND_MAX >> 1)

нафига приведение к bool?
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #38 : 30-06-2008 03:46 » 

деление константы или сдвиг - без разницы, будет всё константа )

а к bool приведено просто так, для наглядности (компилятор всё равно это сделает)
Записан

Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines