crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> как получить случайное число в заданном диаппазоне?
Litkevich Yuriy
  опции профиля:
сообщение 2.3.2009, 17:42
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


В Си это дело определяется следующими вещами:
int rand(void) - генератор
void srand(unsigned int) - стартовая точка
RAND_MAX - конечная точка

как задать конечную точку в рантайме?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Tonal
  опции профиля:
сообщение 3.3.2009, 8:51
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Народ, вы чего! Идите в help/man/google и читайте про то, что такое rand и srand.

rand - генератор псевдослучайной последовательности от 0 до RAND_MAX
Это значит, что он на основе некоторого текущего числа вычисляет следующее. При этом вычисленное число становится текущим.
srand - явно устанавливает текущее.

Т.е. код функция
int myrand() {
  srand(5);
  return rand();  
}

будет всегда возвращать одно и тоже число, а уж последовательность srand(RAND_MAX)*srand(RAND_MAX)*srand(RAND_MAX)
бессмысленна и не скомпилируется.

Для получения сколько-нибудь случайной последовательности, srand нужно вызывать 1 раз где-нибудь в начале программы и инициализировать чем-нибудь б/м случайным - текущим временем, например.

Ну или использовать более другие генераторы случайности. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.1.2025, 0:48