![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
random [D7, 2000, XP, 2003]
antonn (work) © (2008-01-06 16:51:00)Фигня какая то:) На некоторых процессорах random() в цикле возвращает одни и теже значения. Насколько я понял, просто не успевает пересчитать из-за малого времени выполнения (фиг знает, как это объяснить, но слиип(1) возвращает к жизни функцию, но все тормозит с ним). Подскажите быструю функцию для получения случайного числа (интервал 0..1, например, шаг 1/360 - т.е. один градус для окружности), чтобы выдавала для 4-10 элементов более-менее случайные значения.
homm (2008-01-06 17:39:00) [41]> [0] antonn (work) (06.01.08 16:51)
> На некоторых процессорах random() в цикле возвращает одни
> и теже значения.
почему одни и тедже значение перестали быть случайнми?
{RASkov} (2008-01-06 17:39:00) [42]> [3] Loginov Dmitry © (06.01.08 17:30)
> В результате получаются совершенно разные элементы:
А ты, Дим, как проверял? с каждым новым запуском программы, или "тупо" несколько раз на кнопку понажимал...
? :)
И как это у тебя двойка-то вообще получилась - первый результат....
Loginov Dmitry (2008-01-06 17:32:00) [43]> На некоторых процессорах random() в цикле возвращает одни
> и теже значения.
А Randomize в этом цикле случайно не крутится?
Loginov Dmitry (2008-01-06 17:30:00) [44]> Вообще-то такое поведение рэндома на всех процессорах....
procedure TForm1.Button1Click(Sender: TObject);
var
a: array[1..20] of double;
I: integer;
begin
for I := 1 to 20 do
a[i] := random;
ShowMessage(floattostr(a[1]));
end;
В результате получаются совершенно разные элементы:
(2.3283064365e-10, 0.031379939523, 0.86104846722, 0.20258096512, 0.2729212672, 0.67165441858, 0.31869127112, 0.16179546528, 0.37223835872, 0.42567376746, 0.082012159517, 0.47479406465, 0.070569330128, 0.84085443476, 0.059724234743, 0.29329657182, 0.9172847087, 0.3679064787, 0.77466489724, 0.32792553585)
DVM (2008-01-06 17:04:00) [45]Попробуй использовать в паре с, например, QueryPerfomanceCounter
{RASkov} (2008-01-06 17:01:00) [46]> [0] antonn (work) (06.01.08 16:51)
> На некоторых процессорах random() в цикле возвращает одни
> и теже значения.
Вообще-то такое поведение рэндома на всех процессорах....
И Рандамайз не помогает?