1. |
RE : veletlen szamok (mind) |
48 sor |
(cikkei) |
2. |
videokartya tipusa. (mind) |
9 sor |
(cikkei) |
3. |
Homero (mind) |
12 sor |
(cikkei) |
4. |
Re: random (mind) |
19 sor |
(cikkei) |
5. |
GNU C, memory alignment (mind) |
17 sor |
(cikkei) |
6. |
Re: 2 word-bol 3 byte (mind) |
21 sor |
(cikkei) |
7. |
Re: A veletlenszam generator (mind) |
46 sor |
(cikkei) |
8. |
RND algoritmusok (mind) |
156 sor |
(cikkei) |
9. |
Re: COM kerdes... (VC++ 6.0 [VS 6.0]) (mind) |
49 sor |
(cikkei) |
10. |
Re: Outgoing COM interface (mind) |
32 sor |
(cikkei) |
11. |
Re: *** HIX CODER *** #263 (mind) |
27 sor |
(cikkei) |
12. |
DelphiX problema (mind) |
9 sor |
(cikkei) |
13. |
Sziasztok ! (mind) |
10 sor |
(cikkei) |
|
+ - | RE : veletlen szamok (mind) |
VÁLASZ |
Feladó: (cikkei)
|
> ... valamilyen source (C,C++,Pascal,Assembler)
> fileban megvan a VELETLEN SZAMOK generalasa.....
Hi!
Az alabbit ajanlom, mar tobb eveken keresztul hasznalom. Ez az RNG
(Random Number Generator) tesztelve volt es el van fogadva a Gaming
Laboratories International-ba, es guarantalt hogy 99.9% random, tobb
fajta teszteken.
// Heart of the Random Number Generator - Triple LSFR's, with the LSB of
each XOR'd to produce one bit each time the function is called.
static unsigned long rA, rB, rC
Unsigned int RandomBit(void)
{
rA =
((((rA>>31)^(rA>>6)^(rA>>4)^(rA>>2)^(rA<<1)^rA)&1)<<31)|(rA>>1);
rB = ((((rB>>30)^(rB>>2))&1)<<30)|(rB>>1);
rC = ((((rC>>28)^(rC>>1))&1)<<28)|(rC>>1);
return(((rA ^ rB ^ rC)) & 1);
// returns XOR of all three LSFR's
}
// ha egy veletlen szam kell (x bit hosszu, 16 bits maximum) az alabbi
GetRandomNumber routine kell hivni x-el az argument-be, es veletlen
szamot adja vissza 0 es (2^x)-1 kozott.
unsigned int GetRandomNumber (unsigned char bNumberOfBits)
{
unsigned int wRandomReturn = 0;
bNumberOfBits %= 17;
while(bNumberOfBits--)
{
wRandomReturn <<= 1;
wRandomReturn |= RandomBit();
}
return(wRandomReturn);
}
Meg egy dolog, az rA, rB es rC variable-t initialise-ni kell egyszer,
ezt akarhonnan lehet, altalaba a RTC-bol (Real Time Clock) a
legegyszerubb.
Ha meg jobb veletlen szamokat akarsz, akkor "hook into the timer
interrupt" es hivd onnan a RandomBit-et allandoan.
Voros Attila - ISDgames
|
+ - | videokartya tipusa. (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Udv CODER-ek!
Kene egy program, ami megallapitja egy videokartya tipusat pontosan.
Azaz, megmondja pl. egy S3-asrol(konkretan ahhoz kene), hogy hanyas
revision, mikor adtak ki, a BIOS datumat, stb..
Elore is kosz,
HTGe
|
+ - | Homero (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Udvozlet!
Kerdes:
Hogyan tudom olvasni az alaplapi homerot?
A BIOS progi vlahogy megteszi, mert folyamatosan valtozik az erteke,
de hogyan tudom en ezt C-bol olvasni?
(Acorp 5TX52 , Award bios)
Ha mas alaplapra van, az is jo, talan hasonlit...
Elore is koszonom
Potyos Hering Laszlo Bodnar Aikido Dojo
mailto:
|
+ - | Re: random (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 27 Oct 98 at 8:08, wrote:
Masok is irtak:
> in ax, 40h
> and ax, 3
> (vagy vmi hasonlo)
Ezekkel vigyazni kell, ugyanis csak akkor jok, ha egyetlen egyszer
akarsz egy veletlenszamot. Az eloszlasuk ugyanis egyaltalan nem
veletlenszeru!
Nagyjabol jo veletlenszamgeneratort irni kulon tudomany, en nem ertek
hozza, csak annyit tudok, hogy nem evidens. Amit tegnap bekuldtem,
arrol azt olvastam, hogy eleg rendes.
István
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
+ - | GNU C, memory alignment (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Kedves GNU C guruk, elore is elnezest, ha a trivialissal hozakodnek elo:
Nem muxenek a dos/windoze alol Linuxra atemelt forrasaim, mert a gcc
defaultban 4 byte-os hatarra igazitja a strukturatagok cimeit, es nem
tudom hogy lehetne rabirni hogy ezt felejtse el.
(#pragma align 1 nem hasznalt)
Tele van a forrasom olyannal ahol egyenest fajlbol strukturaba
fread-el a bestia, ilyenkor persze doglott a progi.
configure.in, makefile meg nincs, siman gcc-vel forditok. Megneztem a
gcc man-t, az alignmentrol nem talaltam semmi mukodokepes opciot.
Mi a varazsige?
TurboC,M$C, tsai, az osszes primitiv fordito tud olyat, hogy en mondom
meg hany byte-os hatarra igazitsa a cimeket. A gcc ne tudna ezt?
udv: VAti
|
+ - | Re: 2 word-bol 3 byte (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Szia!
Szerintem igy rovidebb. :)
var
a, b: word;
x1, x2, x3: byte;
.
Eredmenyek:
x1 = 77, x2 = 38, x3 = 46
Udvozlettel:
Giskard
|
+ - | Re: A veletlenszam generator (mind) |
VÁLASZ |
Feladó: (cikkei)
|
ImRe wrote:
> RND MACRO ;
> MOV AX,WORD PTR SEED1 ;
> MOV BX,WORD PTR SEED2 ;
> MOV CX,AX ;
> MOV DX,8405H ;
> MUL DX ;
> SHL CX,3 ;
> ADD CH,CL ;
> ADD DX,CX ;
> ADD DX,BX ;
> SHL BX,2 ;
> ADD DX,BX ;
> ADD DH,BL ;
> SHL BX,5 ;
> ADD DH,BL ;
> INC AX ;
> ADC DX,0 ;
> MOV WORD PTR SEED1,AX ;
> MOV WORD PTR SEED2,DX ;
> ENDM ;
szerintem erdemesebb 386 utasitasokkal leirni:
(meglepoen egyszeru, es gyorsabb)
Seed dd ?
RndConst dd 8088405h
mov eax,[Seed]
mul [RndConst]
inc eax
mov [Seed],eax
> ; A tapasztalatok szerint a dx-ben kiadott ertek jobb, mint az ax-beni
> ; ------------------------------;
tudtommal a pascal is dx-et hasznal, meghozza szorozza
a random fv parameterevel (limit ertekkel).
mul dword ptr [Limit] ; edx-be egy 0..Limit-1 erteket kapunk
bye
ui: Seed-et program inditaskor erdemes inicializalni peldaul
[40h:6Ch]-re.
--
Picard / Rhyme
Gabor Kovacs mailto:
tel:+36(30)9606169 icq:18722202
|
+ - | RND algoritmusok (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Haliho!
Nezegettem a #263-ik szamba kuldott algoritmusokat es meglepve
tapasztaltam, hogy a legtobbjuk "hazilag fabrikalt" , minden matema-
tikai megalapozottsag nelkul... Pedig a ma hasznalt jo veletlenszam
algoritmusok is tisztan matematikai uton allitjak elo a szamot, nem
pedig portolvasassal, vagy veletlennek tuno bitkapcsolgatassal. A baj
ezekkel a "portolvasos" eljarasokkal, hogy csak latszolag veletlen-
szeruek az igy generalt szamok, valojaban vajmi keves kozuk van hozza.
Erdemesebb inkabb kis tobbletraforditassal _SOKKAL_ veletlenszerubb
generatort irni! (A veletlenseg meresere egyebkent vannak modszerek,
akit bovebben erdekel nezze meg a Knuth konyv II kotetet, vagy
_LEGVEGSO ESETBEN_ irjon maganba.)(Egyebkent a level anyaga is a konyv
es sajat tapasztalat alapjan keszult.)
-------------------------------------
Linearis kongruencia-sorozat modszere
-------------------------------------
A modszer a veletlenszamok egy sorozat generalja, ahol a kovetkezo
elemet az
X(n+1) = ( a*X(n) + c ) mod m, ahol
0 < m (modulus)
0 =< a < m (egyutthato)
0 =< c < m (novekmeny)
0 =< X(0) < m (kezdoertek)
osszefugges alapjan kell szamolni, ahol "mod m" az m-el torteno osztas
maradekat jelenti. Mivel ez egy periodikus sorozat, szukseges hogy a
periodus hossza (ami lkkt(m,a)) a leheto legnagyobb legyen. Ehhez es
az egyeb veletlenszeruseghez szukseges feltetelek teljesulesehez az
alabbi felteleknek is teljesulnie kell:
c es m relativ primek
m minden primosztoja (a-1)-nek is primosztoja
ha m 4 tobbszorose, akkor (a-1) is 4 tobbszorose
Nehany szam, amik (matematikusok altal) kiprobaltan jo generatort adnak:
a c m
3141592653 2718281829 2^35
1812433253 0 2^32
1566083941 0 2^32
69069 0 2^32
1664525 0 2^32
6364136223846793005 0 2^64
Mas szamokkal is lehet kiserletezni, de a felteteleket betartasa
eseten sem fogtok ezeknel jobbakat talalni.
Ezek utan az RND rutin:
rndnum dd 0 ; ez tartalmazza szamot
; kezdoertek beallitasa datumbol es idobol keverve
initrnd PROC
mov ah, 2ah ; datum lekerdezes
int 21h
mov WORD PTR rndnum, dx
mov WORD PTR rndnum+2, cx
mov ah, 2ch ; ido lekerdezes
int 21h
xor WORD PTR rndnum, cx
xor WORD PTR rndnum+2, dx
ret
initrnd ENDP
; eax-ben ad egy 32-bites veletlenszamot
getrnd PROC
mov eax, rndnum
mov edx, 3141592653 ; ez az egyutthato
mul edx
add eax, 2718281829 ; ez a novekmeny
mov rndnum, eax
ret
getrnd ENDP
------------------------------------
R.R.Coveyou fele kvadratikus modszer
------------------------------------
Ennel a modszernel a kezdoertek tetszoleges, de az alabbi
teljesuljon ra:
X(0) mod 4 = 2
A tovabbi ertekek az
X(n+1) = [ X(n)*( X(n)+1 ) ] mod 2^e
keplet alapjan szamolhatok, ahol "e" tetszoleges. Ezzel a modszerrel
is hasonlo veletlenszeruseget lehet elerni, mint a linearis
kongruencia-sorozat modszerevel.
Assemblyben:
rndnum dd 0 ; ez a szam
; kezdoertek, mint az elobb, de az also 2 bitje: "10"
initrnd PROC
mov ah, 2ah ; gets the date
int 21h
mov WORD PTR rndnum, dx
mov WORD PTR rndnum+2, cx
mov ah, 2ch ; gets the time
int 21h
xor WORD PTR rndnum, cx
xor WORD PTR rndnum+2, dx
and BYTE PTR rndnum, 0fch ; x(0) mod 4 = 2
or BYTE PTR rndnum, 02h
ret
initrnd ENDP
; eax-ben adja a 32 bites veletlenszamot
getrnd PROC
mov eax, rndnum
mov edx, eax
inc edx
mul edx
mov rndnum, eax
ret
getrnd ENDP
-----------------
Additiv generator
-----------------
Ennel a generatornal szukseg van egy 55 elemu puffere, ahol az utolso
55 szam van eltarolva. A puffert indulaskor fel kell tolteni, a szamok
nem lehetnek csupa paros szamok, de egyebkent TETSZOLEGESEK. A sorozat
kovetkezo elemet az
X(n) = ( X(n-24) + X(n-55) ) mod m
osszefugges adja, ahol m tetszoleges (logikusan 2^e, pl. 32) es n>55.
A 24 es az 55 nem hasrautessel lettek kitalalva, ezekre a szamokra
eleg hosszu a sorozat periodusa. Termeszetesen a pufferbe utolso
elemkent be kell irni az eppen generalt szamot, hogy kesobb fel
lehessen hasznalni a tovabbi szamok generalasahoz. Ez az algoritmus
gyengebb mint a linearis konguencia-sorozat modszer, viszont nem
tartalmaz szorzast.
Ehhez nem irok peldat, aki akarja az ugyis meg tudja csinalni. ;-)
Ja, es meg valami: Mindegyik generatorra igaz, hogy a nagyobb
helyierteku bitek "veletlenebbek", igy ha pl. csak 8 bites
veletlenszam kell, akkor inkabb valamelyik felsobb bajtot hasznald!
Na, akkor ennyi.
Bye,
MOD
Nincs valakinek jo doksija d3d programozasrol? Ha igen elkuldhetne.
|
+ - | Re: COM kerdes... (VC++ 6.0 [VS 6.0]) (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hali
wrote in message ...
>Hellosztok!
>
>Le tudna skarcintani valaki, hogy hogy kene egy ActiveX Code Component -et
>felhasznalni VC++ 6.0 -ban ?
Ha jol ertem, egy COM komponenst szeretnel felhasznalni. Tobb megoldas is
van, en a nativ COM tamogatast javaslom, ha van a komponensnek Type
Library-ja.
Igy nez ki pl az SQLOLE COM komponens hasznalata:
#import "d:\winnt\system32\sqlole65.dll" // tipuskonyvtar behozatala
using namespace SQLOLE;
......
HRESULT hr;
_ApplicationPtr pApp; // interfesz: _Application, ebbol a smartptr
NameListPtr pNameList;
_bstr_t strDBLibVer;
_bstr_t strServer;
hr = pApp.CreateInstance( __uuidof(Application) ); // coclass: Application
if( FAILED(hr) ) return FALSE;
strDBLibVer = pApp->DBLibraryVersionString; // property hivas
OutputDebugString( (TCHAR*)strDBLibVer );
pNameList = pApp->ListAnnouncedNetworkSQLServers(); // method hivas
for( long i = 1; i <= pNameList->Count; i++ )
{
strServer = pNameList->Item( i );
OutputDebugString( (TCHAR*)strServer );
}
return TRUE;
>
>By
>Godzzo (icq:20217263)
>
Udv
Schadt Gyorgy, MCSD
|
+ - | Re: Outgoing COM interface (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hi
wrote in message ...
>Ha jol tudom akkor letezik egy DOM (Document Object Model) amiben
>pontosan le van irva, hogy milyen szabvanyos even-tekre lehet kerni
>notifikaciot, de en most eloszor csak a progress bar lehetoseget
>akarom beepiteni.
>Csinalt mar valaki ilyet vagy van valakinek egy peldaja amin
>keresztul meg tudnam erteni hogy mikent lehet a
>legfajdalommentesebben - ugy ertem, hogy a legtobb VC++ szolgaltatast
>kihasznalva - megvalositani egy outgoing interfacet?
A "szabvany" megoldas, hogy a kliens implemental egy interfeszt (Sink), a
szerver pedig connection pointokat negy interfeszen keresztul
(IConnectionPointContainer, IEnumConnectionPoints, IConnectionPoint,
IEnumConnections). A kliens kikeresi a Sinkjenek megfelelo Connection
Point-ot, es Advise-val beregiszralja magat. H esemeny van, a szerver
vegighivja az osszes beregisztralt Sink megfelelo metodusat.
Az ATL es az MFC is jelentos tamogatast ad a fentiek megvalositasahoz.
Ha viszont csak a progressbarodat akarod mozgatni, akkor szerintem
RegisterWindowMessage, majd egy metoduson keresztul atadod a HWND-t es a
message kodjat, a szerver pedig PostMessage-vel jelez. Regi, de jol bevalt
modszer, igaz csak ugyanazon gepen muxik, es VB-bol nem lehet lekezelni...
Udv
Schadt Gyorgy, MCSD
|
+ - | Re: *** HIX CODER *** #263 (mind) |
VÁLASZ |
Feladó: (cikkei)
|
> Felado : [Hungary]
> Temakor: Assembler - valasz ( 20 sor )
>
> > UDV : Van-e kozottetek egy (ket) assembler agyacska,vagy olyan pofa
> > akinek valamilyen source (C,C++,Pascal,Assembler) fileban megvan a
> > VELETLEN SZAMOK generalasa.En szetneztem (egy kicsit) de sehol sem
> > talaltam.Azt mondtak,hogy valami PORT-okat kell olvasni,de nem tudom,
> > hogy melyeket.
>
> A helyzet eléggé egyszerű: az ember először lekéri a rendszeridőt, amit
> belepakol egy 32-bites memóriarekeszbe. Amikor új véletlenszámra van szükség,
> egyszerűen elővesszük, eltoljuk néhányszor ízlés szerint, hozzáadunk egy
> tetszőleges számot - lehetőleg nem egyet vagy kettőt, esetleg még
> bitmanipulációkat is végzünk rajta...
Pontosan. ;-)
Ezutan fogjuk a fejunket, mert kiderul, hogy az eljarasunknak 100 alatt van
a periodusa, es raadasul valami idiota eloszlasban adja ki a szamokat.
Remek tanacs. ;-)
Foleg, ha Monte Carlohoz kellene...
ImRe
> --------------------------------------------------------------------------
... Our continuing mission: to seek out knowledge of C, to explore strange
unix commands, and to boldly code where no one has man page 4.
(lpg)
|
+ - | DelphiX problema (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Sziasztok!
Van valaki, aki DelphiX-xel dolgozott mar? A kerdesem a kovetkezo. Az addig
rendben van, hogy egy .x file objektumaval zsonglorkodok, de hogy lehet
futasidoben megrajzolni egy objektumot? Azaz nem elore definialttal
dolgozni, hanem mondjuk valtozokkal megadni egy kocka oldalait, stb. Ha
valakinek van ilyen jellegu peldaprogramja, szivesen fogadnam!
Koszi elore is: Anubisz
|
+ - | Sziasztok ! (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Ugy tudom, regebben volt szo itt a CODER-ben a kifejezes kiertekelesrol.
Meg tudna valaki mondani, hol lehet utananezni? Jo volna magyarul.
Pascal compilert szeretnek irni DOS ala, ami commodore-ra forditana futtathato
kodot.
Koszonom: Tamas FatMan[DS]
Nagy Tamas
|
|