Форум: "Система";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизВроде лёгкий вопрос, но сложный. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.055 c