[linux-programlama] Re: yuzdeli rastgele sayi..

---------

From: serdar (serdar@e3tam.com)
Date: Tue 09 Mar 2004 - 07:13:26 EST

  • Next message: AHMET PEHLIVAN: "[linux-programlama] Re: web uzerinde program"

    Benim dusunucem random fonsiyonunu dongu icerisinde surekli calistirarak
    sayiya karsilik gelen olasilik degeri yakalandiginda donguye son vermek.

    Ornek;

    int N[100]; //sonucta cikarilacak sayilar dizisi
    int O[100]; //sayi dizisine karsilik gelen olasilik dizisi

    int son, for1, aranan_sayi;

    son=3D1;
    while(son){
    for(for1=3D0;for1<100;for1++){
    if( rnd() < O[for1]){son=3D0;for1=3D100;aranan_sayi=3DN[for1]; }
    }}

    printf("%d\n", aranan_sayi);

    Sanirim boyle bir algoritmanin calismaa hizida rnd() (yani sansa) kalir.

    Saygilarimla ...

    Selamlar

    Yan=FDtlar ger=E7ekten g=FCzelve ben de ayr=FDca c programlamay=FD =
    referans alarak
    bir do while dongusu icersinde herbir y=FCzde x sayisi icin farkl=FD =
    olan
    bir
    for dongusu ile ihtiyac duyulan elemanlar uretilerek daha sonras=FDnda
    while
    sart=FDnda random se=E7im sart=FDn=FD kontrol ederken c=FDk=FDsa =
    zorlayabilirsiniz
    gibi
    gelyor bana.Tabiiki bunu her for dongusunden c=FDk=FDsta continue =
    sozc=FCg=FC
    ile
    while sart=FDn=FD kontrol etmeye zorlaman=FDz gerekir alam=FDnda =
    dusunmemiz
    gerekir
    yani

    do
    {
    n_kontrol=3D0;
    for (controlsayi=3D0 ; controlsayi<=3Dyuzde_n ; controlsayi++)
    n_kontrol=3D1;
    continue;

    n_kontrol=3D0;
    for (controlsayi=3D0 ; controlsayi<=3Dyuzde_m ; controlsayi++)
    n_kontrol=3D2;
    continue;

    n_kontrol=3D0;
    for (controlsayi=3D0 ; controlsayi<=3Dyuzde_x ; controlsayi++)
    n_kontrol=3D3;
    continue;
    }
    while(random (z)_conditions)

    switch (n_kontrol)
    {

    case 1:
    printf("Rasgele uretim sayiniz 1 yani yuzde_n");
    break;
    case 2:
    printf("Rasgele uretim sayiniz 2 yani yuzde_m");
    break;
    case 3:
    printf("Rasgele uretim sayiniz 3 yani yuzde_x");
    break;
    default :
    printf("yuzde_x,yuzde_m,yuzde_n icin hicbir say=FD girmediniz tekrar
    girebilirsiniz/*yorum k=FDsm=FD*/)");
    }

    yukaridaki =F6rnek sadece her yuzde m,n,x degeri icin for donguleri =
    icinde
    kalarak ,
    for dongu islevi bitince while sart=FD kontrolu ile (continue nedeni
    ile)kendisini
    cikisa zorlamaktadir. Tabii burada goremedigim k=FDsimlar olabilir ama =
    bu
    mant=FDk
    yakla=FE=FDk sonucu verecektir.Belki de bu random while k=FDsm=FDnda =
    sistem
    saatini
    bir
    =E7arpan olarak kullanmal=FDd=FDr.veya kulan=FDc=FDnn bir yan=FDt=FD =
    olabilir bu size
    kalm=FDs bir
    tasarim.=D6nerimi denemedim ve sizin icin mant=FDk anlams=FDz gelebilir =
    .bu
    sadece
    bir
    =F6neri ve while k=FDsm=FDn=FD istediginiz herhangibir sartla kontrol
    edebilirsiniz
    -----Original Message-----
    From: linux-programlama-bounce@liste.linux.org.tr
    [mailto:linux-programlama-bounce@liste.linux.org.tr]On Behalf Of Serdar
    K=D6YL=DC
    Sent: Tuesday, March 09, 2004 9:51 AM
    To: linux-programlama@liste.linux.org.tr
    Subject: [linux-programlama] Re: yuzdeli rastgele sayi..

    Selamlar..

    Optimizasyon meselesi :)

    Eger "optimize for speed (Optimize for Less CPU Usage)" hiz icin
    optimize etmek istiyorsaniz array kullanmak iyidir. Yok, "Optimize for
    size" olarak dusunuyorsaniz bir fonksiyon ile yapmak gerekir.

    Diger yandan mesela 5 adet deger varsa, cogu zaman 100 elemanli bir
    array yapmak pek akillica degildir. Ornegin,

    A->%40
    B->%5
    C->%15
    D->%30
    E->%10

    ise, 1 tane B, 8 tane A, 3 tane C, 6 tane D, 2 tane E olmak uzere, 20
    elemanli bir array yeterli olacaktir. OKEK/OBEB Vs. mevzulari.

    Olaya birde su acidan bakin, eger siz 100.000 deger icinden bazilarinin
    farkli frekanslarda olmasini istiyor olsaydiniz, size ne kadar bir array
    gerekirdi?

    Saygi ve sevgiler..

    > merhaba..
    >
    > yardimlariniz icin tesekkur ederim...
    >
    > rastgelelik kavrami acisindan en dogru cozum herbir sayisi dize
    icerisinde
    > yuzde oraninca tekrarlamak sanirim..
    >
    > tekrar tesekkurler :)
    >
    >
    >
    >
    >


  • Next message: AHMET PEHLIVAN: "[linux-programlama] Re: web uzerinde program"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.