Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Случайные числа

Автор: suriv 28.10.2004 20:02

Задача:
Дан массив из 50 чисел. Заполните его случайными числами. Вывести на экран сначала все положительные его элементы, а затем все отрицательные.Задача не сложная решить наерно могу.
Заполните случайными числами: lol.gif
типа это m[i]:=random(???)
как как "включить" отрицательные числа? :p2:
===================================================
P.S допустим если я хочу положительными заполнить будет например:
m[i]:=random(300);

А если отрицательными?
Не будет же:
m[i]:=random(-100+200) или как там

Автор: Altair 28.10.2004 20:09

иногда нужно брать число и умножать на -1. ТОгда иногда будут случайные отрицательные...
Например
N:=random(100);
If random(2) =1 then N:=-N;

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

Автор: APAL 28.10.2004 20:17

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

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

Не так....

N:=300-random(600);

Автор: suriv 28.10.2004 20:21

на этом сайте написано:

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

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

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

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




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

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

Автор: Altair 28.10.2004 20:26

Цитата
Не так....

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

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

Автор: APAL 28.10.2004 20:32

не вероятность получения случайного числа, а вероятность получения отрицательного или положительного числа.

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

Автор: suriv 28.10.2004 20:36

на этом сайте написано:

Цитата

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

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

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

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



===

Цитата

N:=300-random(600);

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

Автор: APAL 28.10.2004 20:38

suriv
да

Автор: Digitalator 29.10.2004 1:11

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

Цитата
да

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

N:=300 - random(601)

Автор: suriv 29.10.2004 1:14

? blink.gif

Автор: Digitalator 29.10.2004 1:22

random возвращает целое число x в интервале [0,n), где n указывается в качестве параметра. Если параметр не задан, то x-дробное, и xE[0,1).
Поэтому random(600), будет возвращать числа в [0,599], а random(601) в [0,600]
вычитая это из 300, в первом случае получаем [-299,300], а во втором [-300, 300]

Автор: GoodWind 29.10.2004 7:44

Suriv, не забывай, что ноль это тоже число.