Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];

Вниз

Метод random   Найти похожие ветки 

 
Prog's Killer   (2004-06-08 10:48) [0]

Пример: number:=rаndom(4)

Мне нужно сделать так, чтобы генерировались числа все, кроме 1, т.е 0,2,3. Подскажите, plz


 
pasha_golub ©   (2004-06-08 10:49) [1]


a := random(4);
while a = 1 do a := random(4);
....


 
Anatoly Podgoretsky ©   (2004-06-08 10:57) [2]

Это изменяет распределение

case rаndom(3)
  0: number := 0;
  1: number := 2;
  2: number := 3;
end;

или

number := rаndom(3);
if number > 0 then number := number + 1;



 
Jeer ©   (2004-06-08 11:22) [3]

Для целочисленных x
x := 2 + round(random(Nmax-1));


 
SergP ©   (2004-06-08 11:28) [4]


>  [3] Jeer ©   (08.06.04 11:22)
> Для целочисленных x
> x := 2 + round(random(Nmax-1));


Дык человеку ноль тоже нужен...


 
Sur   (2004-06-08 11:30) [5]


> pasha_golub

Лучший ответ!!!


 
Digitman ©   (2004-06-08 11:33) [6]

const V: array[0..2] of Integer = (0, 2, 3);

ResultRandomValue := V[Random(SizeOf(V))];


 
Romkin ©   (2004-06-08 11:34) [7]

Anatoly Podgoretsky ©  (08.06.04 10:57) [2] Это НЕ изменяет распределение :))


 
english   (2004-06-08 11:35) [8]


> > pasha_golub
>
> Лучший ответ!!!

Нифига, он

> изменяет распределение

, кроме тго если нужно исключить много чисел, то плохой способ, тормозной, т.к. число итераций while теоретически не ограничено


 
V-Isa   (2004-06-08 12:09) [9]

number:=random(3)+1;
if number=1 then number:=0;


 
Romkin ©   (2004-06-08 12:20) [10]

english  (08.06.04 11:35) [8]
1. Генератор в Delphi достаточно хорош. И если у него просишь числа 0,1,2,3 то он распределяет их равномерно. Если 1 мы игнорируем, то как, ну как это скажется на вероятностях появления остальных цифр?!
2. "число итераций while теоретически не ограничено" чушь. Вероятность появления 1 равна 1/4, если мы исключаем 2 числа из десяти, то математическое ожидание исключений 1/5, дисперсию не посчитаю, увы. Но результат прост: исключения очень редки, а вероятность появления длинной последовательности исключаемых цифр пренебрежимо мала.


 
Romkin ©   (2004-06-08 12:31) [11]

V-Isa  (08.06.04 12:09) [9] А вот так - неверно. 0 будет появляться в два раза чаще, чем любая из других цифр!


 
Romkin ©   (2004-06-08 12:32) [12]

Ой, сорри, +1 не заметил :))


 
pasha_golub ©   (2004-06-08 13:14) [13]

Ну и развели. В таком свете, разрешите у автора вымогать постановку задачи в развернутом виде. А то чует моя ... что окажется все настолько прозаично, что слова "дисперсия", "распределение" и т.д., кажутся в данном контексте просто матом. ;-)


 
Prog's Killer   (2004-06-08 15:18) [14]

pasha_golub - вот лучший ответ! Спасибо!


 
pasha_golub ©   (2004-06-08 15:43) [15]

Я выиграл! ;0)))


 
begin...end ©   (2004-06-08 16:01) [16]


> pasha_golub


repeat
 A := Random(4)
until A <> 1

У меня красивее :)


 
Григорьев Антон   (2004-06-08 16:09) [17]


> pasha_golub - вот лучший ответ! Спасибо!


Да нет, не лучший. Там будет цикл, котоый снизит производительность. Проще так:

A:=random(3);
if A=1 then A:=3;


 
Weber ©   (2004-06-08 16:17) [18]


> Prog"s Killer   (08.06.04 15:18) [14]

Разуй глаза!
100 раз вызывать Random вместо 1, как например в [9].
Хотя ещё лучше:

function MyRandom(N: Integer): Integer;
begin
 Result := Random(N);
 if Result >= 1 then Inc(Result);
end;

Random вызовется 1 раз и выполнится код быстрее чем даже в [9].


 
Weber ©   (2004-06-08 16:21) [19]


> Anatoly Podgoretsky ©   (08.06.04 10:57) [2]

Уж больно громоздко! ;)

> english   (08.06.04 11:35) [8]

Распределение случайной величины по множеству будет таким же, хотя это - худший из вариантов! :)

> begin...end ©   (08.06.04 16:01) [16]

И ты туда же!!! 8(


 
begin...end ©   (2004-06-08 16:24) [20]


> [19] Weber ©   (08.06.04 16:21)


Не надо так нервничать, я не туда же, и не говорю, что это лучший способ.


 
Weber ©   (2004-06-08 16:25) [21]


> Random вызовется 1 раз и выполнится код быстрее чем даже
> в [9].

Нет, всё таки лучше [9], т.к. if выполнится только для одного числа!


 
pasha_golub ©   (2004-06-08 16:26) [22]

Weber ©   (08.06.04 16:21) [19]
Да, проще относись к жизни. :-)))


 
Weber ©   (2004-06-08 16:38) [23]


> pasha_golub ©   (08.06.04 16:26) [22]

function MyRandom(N: Integer): Integer;
begin
 Result := Random(N);
 if Result = 1 then
   Result := MyRandom(N);
end;
:))))


 
pasha_golub ©   (2004-06-08 16:40) [24]

Weber ©   (08.06.04 16:38) [23]
А вдруг опять еденица? :-)))


 
begin...end ©   (2004-06-08 16:43) [25]


> [24] pasha_golub ©   (08.06.04 16:40)
> А вдруг опять еденица? :-)))


Значит, не судьба :)


 
Weber ©   (2004-06-08 16:54) [26]


> pasha_golub ©   (08.06.04 16:40) [24]

Нужно прописать метод внутри формы
function TForm123.Random(N: Integer): Integer;
begin
 Result := 1;
end;



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

Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.028 c
14-1085917759
Ivolg
2004-05-30 15:49
2004.06.20
Системное время


14-1086336560
Baks
2004-06-04 12:09
2004.06.20
Из рубрики Знаменательная математика3


14-1085639051
Романов Р.В.
2004-05-27 10:24
2004.06.20
Попробуем провести небольшую олимпиаду


14-1086152166
Anatoliy
2004-06-02 08:56
2004.06.20
Курорты Турции


6-1083203950
-+= Evgeney =+-
2004-04-29 05:59
2004.06.20
Доступ к программе по сети





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский