getRandomNumber() v2.0

Indította krisk, 2015. augusztus 23. - 21:11:53

Előző téma - Következő téma

krisk

Nem tudom, miért kaptam warnt, sajnos az első próbálkozásom volt, nem vagyok én egy pro scripter és ahogyan megnéztem, volt vele egy kis probléma, mert valóban a kockát levertem az asztalról mikor eldobtam a kockát, de azt hittem, hogy nem lesz ezzel baj, DE hát sajnos warnt kaptam miatta. :\'(
Hát de mindegy, szóval nem értem, hogy miért nem volt a posztomnak értelme, mikor egy teljesne működő script volt, csak nem csinálta azt, amit kellett volna!!! Na de ezt mostan javítani fogom:
Szóval ez a második próbálkozásom, remélem hogy ezér tnem fogok warnt kapni! Úgy döntöttem, hogy a sokkal felsőbbrendűbb kockadobásos módszer helyett egy ilyen matematikai hülyeséggel próbálkozok ami úgy se érdekel senkit, de hát mindegy, ha nem akarok megint warnt kapni ettől a remek közösségtől, akkor ez van. :@
Na mindegy, ez egy https://en.wikipedia.org/wiki/Linear_congruential_generator\" rel=\"external nofollow\">lineáris kongrugencia generátor, aminek az értékei a glibc-ből vannak szedve. A seed valami nehezen replikálható legyen, a tesztfüggvényben gettime() van. A szám 0 és RAND_MAX között lesz, használd a % operátort ha egy intervallumot akarsz. A számok nem kriptográfiailag biztosak meg mittudomén meg a többi hülyeség amit el kéne mondanom de NEM FOGOM inkább nézzetek utána!!!! Na szóval a lényeg hogy ezért nem kapok warnt????????? ReméleM!!!!!!!!!!!!!!!!!!!!!
Implementáció:
 

#define RAND_MAX 0x7fffffff
new gNext;
getRandomNumber_test()
{
printf(\"Veletlen szam 0 es 50 kozott:\");
for( new i = 0; i<5000; i++ )
{
printf(\"%i: %i\\t\", i, getRandomNumber(gettime()) % 50 );
}
return 1;
}
getRandomNumber(seed)
{
if( gNext == 0 )
{
    gNext = seed;
}
return gNext = (gNext * 1103515245 + 12345) & RAND_MAX;
}

EnterR

Fogalmam sincs, hogy mi ez de elég meggyőző.

anGeL

Eléggé meggyőző és eléggé szígyó. Hasznos kis script!  :shurg:

krisk

#3
Idézetet írta: anGeL date=1440357472\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57397\" data-ipsquote-contentclass=\"forums_TopicEléggé meggyőző és eléggé szígyó. Hasznos kis script!  :shurg:
 
Van egy jobb verzióm is, ha nem érted, hogy mit csinál, ez sokkal egyszterűb bés könnyebb megérteni:
 

#define RAND_MAX 2147483647
getRandomNumber(seed)
{
    #pragma unused seed
    return random(RAND_MAX);
}

AnthonyGates

Fajin! Nagyon hasznos. Régóta kerestem

Csempe.old

Szép munka, bár értelme az a 0 felé konvergál.
Ennek a \"kis kódnak\" max annyi lehet az értelme, hogy nem kell változóba tárolni a számot. Ja és még szerintem lassítja is a folyamatot.

krisk

Annyi az értelme, hogy jobb, mint az alap pawn-ba beépített random(), mert lehet seedelni.
Amúgy nyilván drágább folyamat, mint a sima alap random(), mert nem pluginban van írva. Ettől függetlenül szerintem nem akkora probléma, az algoritmus O(n) [lineáris] idő alatt fut és kb. 1300 művelet kerül 1 ms-be az én gépemen. Nem hiszem, hogy egy lineáris algoritmusnál és egy olyan ritkán használt függvénynél, mint a random(), pont a futásidővel kéne bajlódni.

Benceee

Kerrsk, nem megy neked ez a beilleszkedés, hagyd a fenébe. Inkább kérdőjelezd a csapat integritását, ahhoz értesz.

grove4l


b1s

Idézetet írta: Benceee date=1440491657\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"57397\" data-ipsquote-contentclass=\"forums_TopicKerrsk, nem megy neked ez a beilleszkedés, hagyd a fenébe. Inkább kérdőjelezd a csapat integritását, ahhoz értesz.
 
erre sajnos minuszt kell adjak ! tisztelni kell a be illeszkedni probalni vagyo tagok probalkozasait!

Magyarosítás várható?
 
[/quote]hatarozott igen a valasz

Csempe.old

Ez nyereményjátékokra is jó!

kurta999

Te atya úr isten mik mennek itt az elmúlt időkben amióta nem nézem a fórumot?  :D  :D  :D  :D  :D
Mellesleg a kód tetszik, nem igazán vágtam pontosan, hogy működik a random, de ez felkeltette az érdeklődésem, tehát irány googlezni.