Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

Вроде лёгкий вопрос, но сложный.   Найти похожие ветки 

 
programmerts   (2002-08-17 18:43) [0]

У меня вопрос. Каким образом можно получить числа через random в диапазоне 100000000000 до 999999999999
Пробовал, но не получается.


 
Korvin   (2002-08-17 19:20) [1]

Ну напиши свой генератор. Например используя idle время виндов, ну и, сам рандом (для прикола),и например текущее время как int. Уже много уникальной инфы для получения "случайных" чисел.


 
Геннадий   (2002-08-17 22:19) [2]

Есдли проблема с границами, то:
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]. Путанное объяснение, но что придумал... Не проверял. Прошу строго не критиковать...


 
Anatoly Podgoretsky ©   (2002-08-17 22:44) [3]

Trunc(random * 900000000000 + 10000000000)


 
Alexey Kuzovlev   (2002-08-18 12:32) [4]

Сделай 3 randomа: 1000..9999, 0..9999, 0..9999, а потом склей их


 
frum   (2002-08-19 09:49) [5]

Не мароч себе голову, делай как Гена.
Пишешь:
random(9999999)+100000;

получается, что 9999999 максимальный елемент, а 10000000 - минимальный. ИНДЖОЙ.


 
Anatoly Podgoretsky ©   (2002-08-19 10:19) [6]

frum (19.08.02 09:49)
Вот именно не морочь людям голову, а попробуй сначала, только именно в тех пределах как запрошено, или в справочной системе посмотри.


 
MAYOR ©   (2002-08-19 10:59) [7]

Не мароч себе голову, делай как Гена.
Пишешь:
random(9999999)+100000;


тогда ответ будет в диапазоне 10099999
уж если хочеш подобным образом тода
random(8999999)+1000000


 
nikolo ©   (2002-08-19 14:09) [8]

{Пример получения 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;


 
Moro   (2002-08-20 16:04) [9]

Дапустим у тебя предел от 1 000 000 000 до 9999 999 999 тогда:
var I : Integer;
Begin
I := random( 8999999999);
I := I + 1000000000;
End;
вот и всё.


 
programmerts   (2002-08-20 17:37) [10]

Довольно таки много способов. Будем выбирать.
Спасибо всем!


 
programmerts   (2002-08-20 18:31) [11]

Вот ещё проблема. Иногда выдаёт 11 цифр, вместо 12.
Я сделал
var
m:real;
begin
m:=random(999999999999)+100000000000;


 
RV ©   (2002-08-20 18:37) [12]

programmerts (20.08.02 18:31

не может быть,
как узнаешь дальше?



Страницы: 1 вся ветка

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-92414
brestmarket
2002-10-15 18:14
2002.10.28
В WebBrowser печать с предпросмотром? Саму печать делаю...


3-92335
студент2002
2002-10-06 11:10
2002.10.28
ADOQuery


3-92329
race1
2002-10-05 13:17
2002.10.28
ibexpert


3-92407
sdn31@mail.ru
2002-10-05 15:32
2002.10.28
Как защитится от универсальных паролей, типа: jIGGAe и др


3-92388
Dimedrol
2002-10-03 18:17
2002.10.28
Query.Locate не работает...