Zapis do pliku

0

Witam
mam pytanko, czemu wywołanie poniższej procedury powoduje zapisanie do pliku 100 takich samych liczb?. Uruchomienie tej samej procedury krok po kroku powoduje zapisanie do pliku 100 różnych liczb.
var
A: array of Real;
F: TextFile;
I, x: Integer;

begin
Randomize;
x:=100;
SetLength(A, x);
for I := Low(A) to High(A) do
begin
A[I]:=normal1(1); //generuje liczbe losowa o rozkladzie normalnym

end;
try
AssignFile(F, 'C:\Moje dokumenty\Delphi projekty\Generatorek\tablica.txt');
Rewrite(F);
for I := Low(A) to High(A) do
Writeln(F, FormatFloat('0.0000', A[I]));
finally
CloseFile(F);
end;
end;

0

Hmm, napisz czym jest funkcja normal();
Jeżeli zwraca ona pseudo-losową liczbę na podstawie upływu czasu (sekund od 1970) roku, to może być powodem takiego zachowania programu.

0

var
x1, y1, xx1, yy1, xx2, yy2: Real;
tekst1, tekst2 : String;
begin
Randomize;
x1:=0;
y1:=0;
xx2:=0;
yy2:=0;
x1:=random;
y1:=random;
tekst1:=FormatFloat('0.0000',x1);
tekst2:=FormatFloat('0.0000',y1);
xx1:=StrtoFloat(tekst1);
yy1:=StrtoFloat(tekst2);
xx2:=sqrt(-2ln(xx1));
yy2:=cos(2
Piyy1);
Result:=xx2
yy2;
end;

0

może spróbuj dać randomize tylko jeden raz, np przed całym zapisem, a z funkcji wywal ... (nie wiem czy to pomoże)

0

A nie lepiej pisac BlockWrite do pliku typowanego?

0

Funkcja Randomize inicjuje losowanie liczb. Niestety w Delphi pierwsza liczba ktora jest losowana daje 0.
Czyli:
[code]
[b]var[/b]
i: Integer;
[b]begin[/b]
Randomize;
i:=Random(400); // i=0
i:=Random(400); // i=liczba_wylosowana
[b]end;[/b]
[/code]

Aby uzyskac rozne liczby powinienes funkcje Randomize wywolac tylko raz.
po prostu usun ja z funkcji [b]normal1()[/b].

[cya]

0

Randomize;
i:=Random(400); // i=0
i:=Random(400); // i=liczba_wylosowana

Nie wydaje ci się że podałeś błędną odpowiedź ?

//Poza tym, zamiast bawic sie w samodzielne znaczenie kodu uzyj i , po to to zrobiono

1 użytkowników online, w tym zalogowanych: 0, gości: 1