[MD-sorular] nxn kare simülasyon

Ali Nesin nesin at bilgi.edu.tr
12 Tem 2009 Paz 12:21:51 EEST


Cok guzel. 
Simdi limitin 1'e gittigini kanitlayabiliriz...
6 x 6 ile 7 x 7 yanitlarindan birinde hata var mi?
A.

-----Original Message-----
From: md-sorular-bounces at matematikdunyasi.org
[mailto:md-sorular-bounces at matematikdunyasi.org] On Behalf Of
ozcankasal at yahoo.com
Sent: Sunday, July 12, 2009 12:03 PM
To: md-sorular at matematikdunyasi.org
Subject: [MD-sorular] nxn kare simülasyon


Aşağıdaki sonuçları her durum için 1000 kere rastgele seçim ile elde ettim. 

3x3:    0,353646353646
4x4:    0,722277722278
5x5:    0,754245754246
6x6:    0,905094905095
7x7:    0,905094905095
8x8:    0,968031968032

daha büyük boyutlarda ise satır ve sütun çarpımları 32bit uzunluğunu
geçtiğinden işlem yapamadım. 

Algoritma şöyle:

%%%%%%%%%%%%%%%%%%%%%%%-Python-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

from __future__ import division

import random

def secim(n):
    s=[random.randint(1,n*n)]
    i=1
    while i<=n*n-1:
        s.append(0)
        i=i+1
      
    j=1
    while j<=n*n-1:
        k=0
        while k==0:
            r=random.randint(1,n*n)
            k=1
            for i in range(0,j):
                if r==s[i]:
                    k=0
            if k==1:
                s[j]=r        
        j=j+1


    return s


def cift(n):
    result=1
    m=secim(n)

    r=[1]
    c=[1]
    i=1
    j=1
    while i<=n-1:
        r.append(1)
        i=i+1
    while j<=n-1:
        c.append(1)
        j=j+1
    l=0
    p=0
    while l<=n-1:
        j=l*n
        while j<=(l+1)*n-1:
            r[l]=r[l]*m[j]
            j=j+1
        l=l+1

    while p<=n-1:
        j=p
        while j<=p+(n-1)*n:
            c[p]=c[p]*m[j]
            j=j+n
        p=p+1

    result=0
    i=0
    j=0
    while i<=n-1:
        if r[i]%2==1:
            result=1
        i=i+1
    while j<=n-1:
        if c[j]%2==1:
            result=1
        j=j+1
    return result



dim=3
number=1000



while dim<=20:
    deneme=0
    dogru=0
    while deneme <=number:
        k=cift(dim)
        if k==0:
            dogru=dogru+1
        deneme=deneme+1    
    print dim,"x",dim,":", dogru/deneme
    dim=dim+1

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



      ___________________________________________________________________
Yahoo! Türkiye açıldı!  http://yahoo.com.tr
İnternet üzerindeki en iyi içeriği Yahoo! Türkiye sizlere sunuyor!
_______________________________________________
MD-sorular e-posta listesi
sorular at matematikdunyasi.org
http://lists.math.bilgi.edu.tr/cgi-bin/mailman/listinfo/md-sorular



MD-sorular mesaj listesiyle ilgili daha fazla bilgi