![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Litkevich Yuriy |
![]() ![]()
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
В Си это дело определяется следующими вещами:
int rand(void) - генератор void srand(unsigned int) - стартовая точка RAND_MAX - конечная точка как задать конечную точку в рантайме? |
|
|
fsMark |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 23.4.2008 Из: г. Киров Пользователь №: 155 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
как задать конечную точку в рантайме? Я делал примерно так: (rand() / RAND_MAX)*(конечная точка) Для произвольного диапазона естественно: (начальная точка) + (rand() / RAND_MAX)*(конечная точка - начальная точка) Сообщение отредактировал fsMark - 2.3.2009, 17:52 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
я вот так сделал:
|
|
|
fsMark |
![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 97 Регистрация: 23.4.2008 Из: г. Киров Пользователь №: 155 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
А ты уверен что это будет нормальное распределение?.. мозги пухнут (конец рабочего дня) - немогу понять.
Сообщение отредактировал fsMark - 2.3.2009, 18:22 |
|
|
kuler |
![]()
Сообщение
#5
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
ну во первых диапазон 99% будет ограниченным, а во вторых можно к примеру делать
return srand(RAND_MAX)*srand(RAND_MAX)*srand(RAND_MAX) |
|
|
Tonal |
![]()
Сообщение
#6
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Народ, вы чего! Идите в help/man/google и читайте про то, что такое rand и srand.
rand - генератор псевдослучайной последовательности от 0 до RAND_MAX Это значит, что он на основе некоторого текущего числа вычисляет следующее. При этом вычисленное число становится текущим. srand - явно устанавливает текущее. Т.е. код функция
будет всегда возвращать одно и тоже число, а уж последовательность srand(RAND_MAX)*srand(RAND_MAX)*srand(RAND_MAX) бессмысленна и не скомпилируется. Для получения сколько-нибудь случайной последовательности, srand нужно вызывать 1 раз где-нибудь в начале программы и инициализировать чем-нибудь б/м случайным - текущим временем, например. Ну или использовать более другие генераторы случайности. ![]() |
|
|
Kagami |
![]()
Сообщение
#7
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Главное не забыть один небольшой момент - rand() возвращает целое число. соответственно выражение rand()/RAND_MAX вернет _целое_ число (т.е. 0)
![]() P.S. По крайней мере у меня так было с gcc 4.2.1, может сейчас что и изменилоcь |
|
|
kuler |
![]()
Сообщение
#8
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kuler |
![]()
Сообщение
#10
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 19.2.2025, 2:15 |