Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вроде лёгкий вопрос, но сложный. [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. Уже много уникальной инфы для получения "случайных" чисел.


Наверх

Титульная страница Поиск, карта сайта Написать письмо