Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz #77257183 #53400 üzenetére

    Szia,

    Itt az én makrós változatom.

    Option Explicit
    Dim fibonacci(1000) As Variant  'megtalált fibonacci számok listája

    Sub Valaszt()
        Dim c As Long
        Dim r As Double
        Dim pozicio As Long
        'Rnd() függvénynek kell, különben nem lesz igazán véletlenszám
        Randomize
            
        '1-es poziciótól indulunk
        pozicio = 1
            
        With ActiveSheet
            'fejléc a füzetre
            .Range("A1") = "Lépés"
            .Range("B1") = "Pozíció"
            .Range("C1") = "Véletlen szám"
            .Range("D1") = "Fibonacci szám"
            
            '100 lépéses ciklus
            For c = 1 To 100
                r = Rnd()
        
                'fel-le lépkedünk a listában
                If r < 0.5 Then
                    pozicio = pozicio + 1
                Else
                    If pozicio > 2 Then
                        pozicio = pozicio - 2
                    Else
                        pozicio = 1
                    End If
                End If
            
            'kiírtajuk a kapott eredeményeket
            .Cells(c + 1, "A") = c
            .Cells(c + 1, "B") = pozicio
            .Cells(c + 1, "C") = r
            .Cells(c + 1, "D") = FibonacciNum(pozicio)
            
            Next c
        End With
    End Sub
    'rekurzív fibonacci szám generátor
    Function FibonacciNum(n As Long)
        
        If Not IsEmpty(fibonacci(n)) Then
            FibonacciNum = fibonacci(n)
            Exit Function
        End If
        
        If n = 0 Then
            FibonacciNum = 0
            fibonacci(0) = 0
            Exit Function
        End If
        
        If n = 1 Then
            FibonacciNum = 1
            fibonacci(1) = 1
            Exit Function
        End If
        
        FibonacciNum = FibonacciNum(n - 1) + FibonacciNum(n - 2)
        fibonacci(n) = FibonacciNum
    End Function

    üdv

  • föccer

    nagyúr

    válasz #77257183 #53400 üzenetére


    Makró beszúrása, ha a munkalapon vagy, akkor alt+F11.
    Gombot a fejlesztőeszközök menöből lehet kirakni.

    Munka1 munkafüzeten, ez a makró:

    Sub Gomb1_Click()
    Dim Fib_sorszam As Integer
    Dim Lepes_szam As Integer
    Dim i As Integer
    Fib_sorszam = 1
    Lepes_szam = Sheets("Munka1").Range("F2").Value
    For i = 1 To Lepes_szam
      If Application.RandBetween(0, 1) = 0 Then
        Fib_sorszam = Fib_sorszam + 1
      End If
    Next
    Sheets("Munka1").Range("F3").Value = Sheets("Munka1").Cells(Fib_sorszam, 2).Value
    Sheets("Munka1").Range("F4").Value = Fib_sorszam
    End Sub

    ps: egyébként nagyon érzékeny az eredmény arra, hogy az első 1-2-3 lépésben mennyi pozitív lépés van.

  • lappy

    őstag

    válasz #77257183 #53400 üzenetére

    Talán ez járható út
    Megszamolod a 0.5 nel nagyobb számokat es kivonod a 0.5 nel kisebb számokat majd a kapott értékkel meg kell keresni a szamsor ahanyadik elemét

Új hozzászólás Aktív témák