Rev 2811 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2811 | Rev 3003 | ||
---|---|---|---|
Line 19... | Line 19... | ||
19 | 19 | ||
Line 20... | Line 20... | ||
20 | *******************************************************************************/ |
20 | *******************************************************************************/ |
Line 21... | Line 21... | ||
21 | 21 | ||
22 | dword generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë |
22 | dword generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë |
23 | 23 | ||
- | 24 | inline fastcall int random( ECX) |
|
- | 25 | // get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî |
|
24 | :int random(int max) |
26 | { |
25 | // get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî |
27 | $push ebx |
26 | { |
28 | |
Line 27... | Line 29... | ||
27 | $rdtsc // eax & edx |
29 | $rdtsc // eax & edx |
Line 33... | Line 35... | ||
33 | $xor ebx,0xdeadbeef |
35 | $xor ebx,0xdeadbeef |
34 | EBX += EAX; |
36 | EBX += EAX; |
35 | generator = EBX; |
37 | generator = EBX; |
Line 36... | Line 38... | ||
36 | 38 | ||
37 | EAX += EBX; |
39 | EAX += EBX; |
- | 40 | EAX = EAX % ECX; |
|
38 | EAX = EAX % max; |
41 | |
39 | return EAX; |
42 | $pop ebx |
Line 40... | Line 43... | ||
40 | } |
43 | } |
41 | 44 | ||
42 | :randomize() |
45 | inline fastcall randomize() |
43 | // initialize random number generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë |
46 | // initialize random number generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë |
44 | { |
47 | { |
45 | asm |
48 | asm |