IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Случайные числа, Вопрос по Random'у
Ромаха
сообщение 27.01.2013 9:30
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Роман

Репутация: -  0  +


Утро Доброе smile.gif

Возникла проблемка, надеюсь Вы поможете мне разобраться с этой бякой.

И так : Есть задачка : Вывести 5 уникальных случайных чисел из диапазона 0..10.

Вот код решающий данную задачу и с ним я полностью согласен :
const N=5;
var
mas : array[1..N] of integer;
i, k, L : integer;
wasBefore : boolean;
begin
Randomize;
mas[1] := Random(35)+1;
for i:=2 to N do begin
repeat
L := Random(35)+1;
wasBefore := false;
for k:=1 to i-1 do
if mas[k]=L then begin
wasBefore := true;
break
end;
until not wasBefore;
mas[i] := L;
end;

{выдача полученных чисел}
for i:=1 to N do Write(mas[i]:3,' ');
WriteLn;
Reaadln;
end.
by Серж

Но так же один человек предложил такой вариант решения задачи :
Цитата
- сначала заполнить массив нужной длины (в данном случае 10) последовательными числами,
- затем перемешать эти числа (random используется именно на этапе перемешивания).


Если бы данный алгоритм употреблялся бы к перемешиванию карт в колоде, то я полностью одобрил бы этот алгоритм.. Но в условиях данной задачи, мне кажется, не допустимо использование данного алгоритма.. Почему? - Когда массив уже заполнен, нужно как-то выбрать 5 элементов массива, а как это сделать? - Рандом уже нам не помошник, а писать Write (a[1], a[3], a[34], etc) мне кажется неправильно..

Надеюсь что Вы опровергните или подтвердите мое "мне кажется" smile.gif

P.S. Задачку мне не сдавать.. Решаю только для себя..
P.P.S. Надеюсь я создал темку в том разделе

Спасибо rolleyes.gif

Сообщение отредактировано: Ромаха - 27.01.2013 9:48
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
@nto$ka
сообщение 28.01.2013 16:38
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


FAQ
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ромаха
сообщение 28.01.2013 18:22
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Роман

Репутация: -  0  +


Вечер Добрый! smile.gif
Цитата(@nto$ka @ 28.01.2013 17:38) *


Мне кажется Вы не поняли суть проблемы. Данная ссылка не несет в себе информацию, которая способна мне помочь.. Я повторю свои вопросы:
1) Употребим ли для данной конкретной задачи алгоритм сначала заполнения, а затем перемешивания?
2) Если да, то как нам выбрать 5 чисел?
3) Если нет, то почему?

Удачи smile.gif

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 9.02.2013 20:45
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Ромаха @ 28.01.2013 19:22) *

Вечер Добрый! smile.gif
Мне кажется Вы не поняли суть проблемы. Данная ссылка не несет в себе информацию, которая способна мне помочь.. Я повторю свои вопросы:
1) Употребим ли для данной конкретной задачи алгоритм сначала заполнения, а затем перемешивания?
2) Если да, то как нам выбрать 5 чисел?
3) Если нет, то почему?

Удачи smile.gif

А на мой взгляд, @nto$ka вполне понял суть проблемы и дал совершенно верную ссылку. Ну а если эта информация не способна Вам помочь, то причину следует искать в несколько ином месте.
1. Да.
2. Подряд. (разумеется, после перемешивания.
3. -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ромаха
сообщение 10.02.2013 15:11
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Роман

Репутация: -  0  +


Спасибо! smile.gif (+1)
Цитата
2. Подряд. (разумеется, после перемешивания.


Тоесть так?

for i := 1 to 5 do
Write (a[i], ' ')



Но всё-таки, мне кажется, эти "волшебные" числа в границах массива не есть хорошо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
@nto$ka
сообщение 12.02.2013 8:25
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Цитата
Но всё-таки, мне кажется, эти "волшебные" числа в границах массива не есть хорошо



И чем же Вас не устроил массив? Что в нем плохого?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 29.03.2024 8:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"