![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вроде лёгкий вопрос, но сложный. [D6, WinXP]
programmerts © (2002-08-17 18:43:00)У меня вопрос. Каким образом можно получить числа через random в диапазоне 100000000000 до 999999999999
Пробовал, но не получается.
RV (2002-08-20 18:37:00) [1]programmerts (20.08.02 18:31
не может быть,
как узнаешь дальше?
programmerts (2002-08-20 18:31:00) [2]Вот ещё проблема. Иногда выдаёт 11 цифр, вместо 12.
Я сделал
var
m:real;
begin
m:=random(999999999999)+100000000000;
programmerts (2002-08-20 17:37:00) [3]Довольно таки много способов. Будем выбирать.
Спасибо всем!
Moro (2002-08-20 16:04:00) [4]Дапустим у тебя предел от 1 000 000 000 до 9999 999 999 тогда:
var I : Integer;
Begin
I := random( 8999999999);
I := I + 1000000000;
End;
вот и всё.
nikolo (2002-08-19 14:09:00) [5]{Пример получения 14-значного числа Random, но можно любой длины}
var
S: String;
begin
Randomize;
S := FloatToStr(Random);
Delete(S, 1, 2);
S := DelBChars(S, "0"); //удаление первых нулей
if Length(StPin) < 14 then
while Length(S) < 14 do
S := S+IntToStr(Random(9));
S := Copy(S, 1, 14);
end;
MAYOR (2002-08-19 10:59:00) [6]Не мароч себе голову, делай как Гена.
Пишешь:
random(9999999)+100000;
тогда ответ будет в диапазоне 10099999
уж если хочеш подобным образом тода
random(8999999)+1000000
Anatoly Podgoretsky (2002-08-19 10:19:00) [7]frum (19.08.02 09:49)
Вот именно не морочь людям голову, а попробуй сначала, только именно в тех пределах как запрошено, или в справочной системе посмотри.
frum (2002-08-19 09:49:00) [8]Не мароч себе голову, делай как Гена.
Пишешь:
random(9999999)+100000;
получается, что 9999999 максимальный елемент, а 10000000 - минимальный. ИНДЖОЙ.
Alexey Kuzovlev (2002-08-18 12:32:00) [9]Сделай 3 randomа: 1000..9999, 0..9999, 0..9999, а потом склей их
Anatoly Podgoretsky (2002-08-17 22:44:00) [10]Trunc(random * 900000000000 + 10000000000)
Геннадий (2002-08-17 22:19:00) [11]Есдли проблема с границами, то:
Random выдаёт случайное число между (0) и (указанным параметором - 1). Если ты желаешь сместить нижнюю границу (0) на N единиц, то просто плюсуй N:
Random(100)+5000 ==> [5000..5099]
Random(990)+10 ==> [10..999]
Параметр задавай по формуле (МаксЗнач - МинГраница + 1), то есть на твоём примере (999 999 999 999 - 100 000 000 000 + 1). Получаем Random(900 000 000 000)+100 000 000 000.
Если с тем, что твоё число не влазеет в тип Integer, то:
(Random(1 000 000 000) * (Random(1000)+1) + Random(1000) - МинГраница) + МинГраница
Первый рэндои даст [0..999 999 999], далее умножение изменит этот интервал на [0..999 999 999/999 999 999 000], делее суммирование - [0..999 999 999/999 999 999 000/999 999 999 999]. Теперь окнинем промежуточные максимумы и получим искомый диапозон - [0..999 999 999 999]. Путанное объяснение, но что придумал... Не проверял. Прошу строго не критиковать...
Korvin (2002-08-17 19:20:00) [12]Ну напиши свой генератор. Например используя idle время виндов, ну и, сам рандом (для прикола),и например текущее время как int. Уже много уникальной инфы для получения "случайных" чисел.