Помощь - Поиск - Пользователи - Календарь
Полная версия: Случайные числа
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
suriv
Задача:
Дан массив из 50 чисел. Заполните его случайными числами. Вывести на экран сначала все положительные его элементы, а затем все отрицательные.Задача не сложная решить наерно могу.
Заполните случайными числами: lol.gif
типа это m[i]:=random(???)
как как "включить" отрицательные числа? :p2:
===================================================
P.S допустим если я хочу положительными заполнить будет например:
m[i]:=random(300);

А если отрицательными?
Не будет же:
m[i]:=random(-100+200) или как там
Altair
иногда нужно брать число и умножать на -1. ТОгда иногда будут случайные отрицательные...
Например
N:=random(100);
If random(2) =1 then N:=-N;

Иногда будут выскакивать (а именно в 50 % случаев) отрицаетльные...
APAL
Цитата(Oleg_Z @ 28.10.04 17:09)
иногда нужно брать число и умножать на -1. ТОгда иногда  будут случайные отрицательные...
Например
N:=random(100);
If random(2) =1 then N:=-N;

Иногда будут выскакивать (а именно в 50 % случаев) отрицаетльные...

Не так....

N:=300-random(600);
suriv
на этом сайте написано:
Цитата
Однако нужно было придумать, как в функции Random получить отрицательные числа. Для этого есть очень простой алгоритм, а точнее даже и не алгоритм, а прием. Выглядит это примерно так:

A := Random(101)-50; {Числа от -50 до 50}

B := Random(101)-200; {от -100 до 100}

Как вы видите, для получения диапазона чисел вида -N....N мы отнимаем от функции Random число, вдвое большее ее диапазона.




===
Цитата
N:=300-random(600);

Это значит числа будут от -300 до 300???
Altair
Цитата
Не так....

Позволь с тобой не согласится, Апал, так тоже можно... другое дело как лучше для конкретного случая ...

Но метод умножения на отрицатекльное число (случайно) тоже иногда применяется...
Твой метод более точен, но мой метод позволяет задать вероятность получения случайного числа...
APAL
не вероятность получения случайного числа, а вероятность получения отрицательного или положительного числа.

Результат по статистике будет тем же. (если считать что random генерит именно случайные, а не псевдослучайные числа)
suriv
на этом сайте написано:
Цитата

Однако нужно было придумать, как в функции Random получить отрицательные числа. Для этого есть очень простой алгоритм, а точнее даже и не алгоритм, а прием. Выглядит это примерно так:

A := Random(101)-50; {Числа от -50 до 50}

B := Random(101)-200; {от -100 до 100}

Как вы видите, для получения диапазона чисел вида -N....N мы отнимаем от функции Random число, вдвое большее ее диапазона.



===

Цитата

N:=300-random(600);

Это значит числа будут от -300 до 300?
APAL
suriv
да
Digitalator
Цитата
Это значит числа будут от -300 до 300?

Цитата
да

нет smile.gif это будут числа от -299 до 300
надо
Код

N:=300 - random(601)
suriv
? blink.gif
Digitalator
random возвращает целое число x в интервале [0,n), где n указывается в качестве параметра. Если параметр не задан, то x-дробное, и xE[0,1).
Поэтому random(600), будет возвращать числа в [0,599], а random(601) в [0,600]
вычитая это из 300, в первом случае получаем [-299,300], а во втором [-300, 300]
GoodWind
Suriv, не забывай, что ноль это тоже число.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.