Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Си: генератор случайных чисел.

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Druuna



Зарегистрирован: 03.05.2005
Сообщения: 2
Откуда: Moscow

СообщениеДобавлено: Вт Май 03 2005 22:59    Заголовок сообщения: Си: генератор случайных чисел. Ответить с цитатой

Думаю, про переменную RAND_MAX знающим людям рассказывать не надо.
Вообщем в чем дело... с точки зрения логики, если эту константу изменить, то изменятся выпадающие числа, т.е. было от 0 до 32767, а станет например от 0 до 9999999. Да вот сколько я ее не изменял ( и увеличивал и уменьшал ), числа выпадали одни и те же, от 0 до 32767
==>> отсюда можно сделать предположение что эта константа не выходит за границы Integer. Ладно, я ее переписал:

было : #define RAND_MAX 0x7FFF
стало: long RAND_MAX 999999

в итоге ничего нового я не получил.

но что больше меня удивило, это то, что когда я удалил эту константу с ее значением и закомментировал те строки модуля stdlib.h, где непосредственного отношения к функции rand() нету, то генератор спокойно продолжил шпарить мне те же числа. думаю, где-то надо изменить тип выходного значения, да и вообще покопаться в других модулях, да вот только где и что искать - не знаю.

вообщем, я уже ломаю над этим голову больше недели и меня это сильно напрягло, и поэтому прошу помощи.

У меня Borland C++ 3.1 (это который для DOS'а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
CrazyWizard



Зарегистрирован: 18.04.2005
Сообщения: 12

СообщениеДобавлено: Ср Май 04 2005 08:09    Заголовок сообщения: Ответить с цитатой

А может ты меняешь в одних библиотеках, а среда компилит программу с другими? Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
CrazyWizard



Зарегистрирован: 18.04.2005
Сообщения: 12

СообщениеДобавлено: Ср Май 04 2005 08:10    Заголовок сообщения: Ответить с цитатой

В смысле, с другими их копиями.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Druuna



Зарегистрирован: 03.05.2005
Сообщения: 2
Откуда: Moscow

СообщениеДобавлено: Ср Май 04 2005 18:36    Заголовок сообщения: Ответить с цитатой

CrazyWizard писал(а):
А может ты меняешь в одних библиотеках, а среда компилит программу с другими? Wink


Исключено.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Пн Май 09 2005 21:29    Заголовок сообщения: Ответить с цитатой

Напиши свой генератор если очень надо.
Вот тут куча теории по генераторам с любыми распределениями.
http://ami.nstu.ru/~chimitova/lectures.pdf
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Ср Май 11 2005 08:55    Заголовок сообщения: Ну и? Ответить с цитатой

Вопрос-то в чём? Ну есть такие макросы, которые бесполезно изменять, так как они имеют информационный характер, и что? Функция случайных чисел -- это последовательность фиксированных чисел, зависящая от начального "зерна", её реализация привязана к длине используемого машинного слова. Для досовского компилятора это 16-битное слово. Вопрос не слышен.
---------------
Ну и?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
prism



Зарегистрирован: 15.05.2005
Сообщения: 5

СообщениеДобавлено: Вс Май 15 2005 17:59    Заголовок сообщения: Ответить с цитатой

К примеру код rand() в CRT MSVC 6.0 (несущественные детали обрезал):
Код:

int rand (void)
{
  return (((_holdrand=_holdrand*214013L+2531011L)>>16)&0x7fff);
}

Сразу видно, что не функция rand() зависит от константы MAX_RAND, а константа MAX_RAND зависит от функции rand() :-) Вообще эта константа существует только для переносимости кода.
К тому же у тебя скорее всего линкуется уже откомпилированый код из библиотеки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...