_Victor_,
Saturn,
Скажу в свою очередь о рандоме, чтобы поправить некоторые неточности. Может, поможет когда-нибудь не ошибиться там, где будет важна точность результата.
Если ты напишешь так: random(51), то будет браться рандомное число от 0 до 51 (51 не включая!)
Без обид, математики не любят длинных слов; т.к. формула рандома
random(N), в таком случае просто говорят, что получается случайное число от 0 до N-1, в данном случае это называется от 0 до 50 без употребления слов, типа "включая", "не включая", так просто грамотнее :wink:
Из подсказки в С2 при вводе выражения random:
Range of random numbers to generate, from 0 to one less than this value (диапазон для генерации чисел от 0 до числа на единицу меньше указанного значения).
Ещё С2 выделяется своим замечательным способом рандома: создаёт целое рандомное число в указанных пределах, а потом к нему не менее рандомнейшую вещественную часть из 10 знаков после запятой (типа
2.0987365876). Таким образом, чтобы получить нормальное целое рандомное число в чётко указанных пределах лучше воспользоваться такой конструкцией:
floor(random(N)) Например, в СС такого не было, там случайное число было целым.
floor(x) - функция округления в наименьшую сторону. Почему нельзя использовать, например, стандартное округление
round(x)? Потому что можно нарваться на ошибку превышения верхнего предела на 1. Допустим, нужно целое число от 0 до 50, мы напишем
round(random(51)). Пусть random(51) выдало нам число 50.7895638902. Тогда функция
round(x) округлит это до 51, что нам совсем не надо. А
floor(x) как бы просто отбрасывает вещественную часть числа, выдавая нам 50.
Если ты напишешь так: random (20, 40), то будет браться число от 20 до 40!
Если написать
random(20, 40), то получится число в пределах от 20 до
39!!! Не до 40. Опять же для получения целочисленного ответа не забываем про
floor(x).
И совсем уж напоследок. Выводил я как-то формулу для рандома в любых заданных пределах. Вполне может когда-нибудь пригодиться. Приведу её и здесь:
random(m-n+1)+nЗдесь m - верхний предел, n - нижний предел. И, конечно, для целочисленных результатов не забываем про
floor(x)