Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
ВнизЛамерский вопрос - рендом из определенного диапазона Найти похожие ветки
← →
WebSQLNeederr (2007-12-23 13:22) [0]Функция random выдает случайное число от НУЛЯ до параметра функции. А как сделать что бы случайное число выводилось из диапазона предварительно заданных згачений, например random(1,3,5,8,15,18,33)
Потом когда мне нужно я мог бы удалить из варианта число 18 и тогда рендом должен был бы выводиться из такого диапазона random(1,3,5,8,15,18,33)
Как это сделать?
← →
Плохиш © (2007-12-23 13:30) [1]Занеси числа в массив и с помощью рандом получай случайный индекс массива.
← →
Blind Guardian (2007-12-23 13:50) [2]а можно ещё так )))
repeat
n:=random(34)
until (n=1) or (n=3) or (n=5) or (n=8) or (n=15) or (n=18) or (n=33);
)))
← →
Blind Guardian (2007-12-23 13:51) [3]Новый Год скоро! давайте смеяться вместе... (ладно, удаляйте эти бессмысленные посты =) )
← →
DrPass © (2007-12-23 17:05) [4]
> а можно ещё так )))
>
> repeat
> n:=random(34)
> until (n=1) or (n=3) or (n=5) or (n=8) or (n=15) or (n=18)
> or (n=33);
Лучше так:
repeat
n:=random(1000000)
until (n=1) or (n=3) or (n=5) or (n=8) or (n=15) or (n=18) or (n=33);
Это создаст иллюзию того, что выбор компьютеру дается нелегко
← →
Kolan © (2007-12-23 17:25) [5]>
> Это создаст иллюзию того, что выбор компьютеру дается нелегко
А что самое прикольное есть вероятность что не дасться никогда :)
← →
студент (2007-12-23 18:29) [6]randomRange
← →
@!!ex © (2007-12-23 19:00) [7]> [5] Kolan © (23.12.07 17:25)
C чего это?
← →
Kolan © (2007-12-23 22:35) [8]> C чего это?
С того что нет 100 вероятности, что из 1 000 000 рэнжм сгенерит один из 6 сабжевых номеров.
← →
Леон (2007-12-24 09:20) [9]
> А что самое прикольное есть вероятность что не дасться никогда
> :)
за достаточно большой промежуток времени - дасться (вероятность то хоть и мала, но отлична от нуля)
← →
Palladin © (2007-12-24 10:43) [10]
> [6] студент (23.12.07 18:29)
и что значит столь глупокофилосовский совет?
← →
@!!ex © (2007-12-24 10:57) [11]> [6] студент (23.12.07 18:29)
Вообще не в тему... сабж читали? Кроме названия, есть еще и описание..
← →
WebSqlNeederr (2007-12-24 17:21) [12]Попрошу без флуда.
А есть ли еще какой то способ кроме как советовал Плохиш © (23.12.07 13:30) [1] ?
← →
Palladin © (2007-12-24 17:30) [13]Ну [4] например, а чем тебя Плохиш, то не устроил? Религиозные убеждения?
← →
Kolan © (2007-12-24 17:31) [14]> А есть ли еще какой то способ кроме как советовал Плохиш
Самый нормальный способ.
← →
WebSqlNeederr (2007-12-24 17:53) [15]Я просто не совсем соображаю как его использовать.
например у меня есть Стрингрид из 8 строчек в которой хранятся данные.
Моей програмой нужно взять из случайной строки стрингрида значение, НО если же другая строка из стрингрида=определенному значению то из этой строки больше не нужно рендомом брать значения НИКОГДА.
Соответственно на первом этапе как советует Плохиш мы создаем массив
var arr:array of integer;
...
SetLength(arr,7);
arr[0]:=1;arr[1]:=2;arr[2]:=3;arr[3]:=4;arr[4]:=5;arr[5]:=6;arr[6]:=7;arr[7]:=8;
То есть например arr[0]:=1 показывает на первую строку стрингрида (нулевая это заголовки, названия).
Теперь мы делаем i:=random(7); скажем рендом стал 4, теперь мы будем брать значения из arr[i] то есть из 5 строки стрингрида.
И вот теперь нужно запретить брать значения из 6 строки. Что то я запутался как это через массив? Заново пересоздавать массив? То есть:
SetLength(arr,6);
arr[0]:=1;arr[1]:=2;arr[2]:=3;arr[3]:=4;arr[4]:=5;arr[5]:=7;arr[6]:=8;
Так?
← →
Плохиш © (2007-12-24 18:02) [16]
> WebSqlNeederr (24.12.07 17:53) [15]
Используй TList.
random(TList.Count)
TList.Delete
← →
WebSqlNeederr (2007-12-25 00:27) [17]Плохиш, спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c