Procedura losująca

0

Jak stworzyć własną procedurę losującą , chodzim mi o to żeby nie korzystać z random , randomize . w builderku , lub w delphi .

0

Nie mogę sobie przypomnieć jak jest zrobione Rendomize w tych kompilatorach (trochę to dla mnie mgliste), ale jeśli chcesz pod BUILDER napisałem taką funkcję:

//Zmienne globalne:
LARGE_INTEGER lpFrequency;
double Start;
LARGE_INTEGER lpPerformanceCountStart;
double Frequency;




//konstruktor Formy (możesz użyć czegoś innego do inicjalizacji)
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
QueryPerformanceFrequency(&lpFrequency);
Frequency = lpFrequency.QuadPart;
Start = lpPerformanceCountStart.QuadPart;
}




//I główna funckja rondoma:
int max=1000; //MAX zasięg randoma
int wynik=0;

LARGE_INTEGER lpPerformanceCountEnd;
double End;
QueryPerformanceCounter(&lpPerformanceCountStart);
QueryPerformanceCounter(&lpPerformanceCountEnd);
Application->ProcessMessages();
End = lpPerformanceCountEnd.QuadPart;
int licz = int(((End - Start) / Frequency)*1000000);
//A teraz najgłupsza i najmniej optymalna funkcja jaką miałem okazję pisać:) :
int prc = StrToInt(IntToStr(licz).SubString(IntToStr(licz).Length()-5,5));

//I wyliczamy wynik z proporcji:
wynik = (prc*max)/99999;
Form1->Caption = wynik;

Mógłbyś ją przyspieszyć przez robienie w innej funkcji tego do tablicy np. 1000 elementowej a potem podawać dane z tej tablicy.

PS> nie mam pojęcia jak to się ima do prawdziwego Random, bo wymyśliłem na poczekaniu:)

0

Wielki thx , dla krecika , inne propozycje też są mile widziane :)

0

"Sztuka progrogramowania" D. Knuth część druga. Mnóstwo algorytmów losujących. Wybierz sobie coś.

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