[PYTHON] Y a-t-il un biais dans les nombres qui apparaissent dans les nombres de Fibonacci?

en premier

・ Il s'agit d'un article pour un mois d'histoire du programme. ・ J'étudie l'agriculture à l'université. ・ Je suis étudiant en deuxième année à l'université.

À propos de cet article

Je vais honnêtement vérifier si les nombres apparaissant dans la séquence de nombres de Fibonacci sont biaisés. Puisqu'il s'agit d'une recherche à tour de rôle, aucune base mathématique n'est donnée. (Pas donné) Au fait F_0=0 Considérons la séquence de Fibonacci de F_1 = 1.

À propos du programme

Je vais le chercher dans mon propre programme, qui sert également d'étude du programme. J'ai d'abord vérifié le nombre de chiffres

Nombre de chiffres dans la colonne du nombre de Fibonacci

À la suite de l'enquête, il est devenu comme suit.

F_10 :2 chiffres
F_100 :21 chiffres
F_1000 :209 chiffres
F_10000 :20899 chiffres
F_100000 :208988 chiffres

Il semble que le nombre de chiffres / n ait convergé. (Il pourrait être intéressant de le rechercher) Le programme utilisé pour enquêter ci-dessous

def fibo(N):
    A=0
    B=1
    if N==0:
        return 0
    elif N==1:
        return 1
    for i in range(1,N+1):
        if i%2==0:
            A+=B
        else:
            B+=A
    if N%2==1:
        return B
    else:
        return A

N=int(input())
ans=str(fibo(N))
print(len(ans))

Compter le nombre d'apparitions de nombres

Examinons. [a, b, c, d, e, f, g, h, i, j] = [nombre de 0, nombre de 1, ..., nombre de 9].

F_10 : [0, 0, 0, 0, 0, 2, 0, 0, 0, 0]
F_100 : [1, 3, 3, 1, 3, 3, 1, 2, 2, 2]
F_1000 : [20, 13, 21, 18, 21, 23, 26, 21, 20, 26]
F_10000 : [217, 199, 228, 254, 194, 202, 217, 198, 197, 184]
F_100000 : [2109, 2135, 2149, 2096, 2023, 2053, 2051, 2034, 2131, 2118]

Il ne semble y avoir aucune variation. Cliquez ici pour le programme utilisé

def check(N):
    M=str(N)
    cnt=[0]*10
    for i in range(10):
        cnt[i]+=M.count(str(i))
    return cnt

Eh bien comme ça.

Enfin, comptons les nombres qui apparaissent de F_0 à F_n. Programme à utiliser ci-dessous

def fc(N):
    cnt=[1,0,0,0,0,0,0,0,0,0]
    if N==0:
        return cnt
    else:
        A=0#Nombre pair
        B=1#Odd th
        for i in range(1,N+1):
            if i%2==0:
                A+=B
                X=check(A)
                for i in range(10):
                    cnt[i]+=X[i]
            else:
                B+=A
                X=check(B)
                for i in range(10):
                    cnt[i]+=X[i]
    return cnt

Confirmation qu'il correspond pour le moment. Affichez les nombres utilisés de F_0 à F_10 et vérifiez avec l'œil humain s'ils sont correctement ajoutés

F_0 : [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
F_1 : [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
F_2 : [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
F_3 : [0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
F_4 : [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
F_5 : [0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
F_6 : [0, 0, 0, 0, 0, 0, 0, 0, 1, 0]
F_7 : [0, 1, 0, 1, 0, 0, 0, 0, 0, 0]
F_8 : [0, 1, 1, 0, 0, 0, 0, 0, 0, 0]
F_9 : [0, 0, 0, 1, 1, 0, 0, 0, 0, 0]
F_10 : [0, 0, 0, 0, 0, 2, 0, 0, 0, 0]
F_0 ~ F_10 : [1, 4, 2, 3, 1, 3, 0, 0, 1, 0]

C'est juste pour le programme. C'était bien.

Comptons. C'est devenu comme suit.

F_0 ~ F_10 : [1, 4, 2, 3, 1, 3, 0, 0, 1, 0]
F_0 ~ F_100 : [108, 139, 107, 101, 113, 95, 96, 116, 93, 104]
F_0 ~ F_1000 : [10475, 10696, 10495, 10476, 10431, 10516, 10433, 10576, 10350, 10303]
F_0 ~ F_10000 : [1045480, 1048189, 1045589, 1046744, 1044979, 1044900, 1042460, 1045481, 1043942, 1044171]
F_0 ~ F_20000 : [4179559, 4186491, 4179239, 4183641, 4180815, 4181752, 4178221, 4176724, 4176043, 4180145]
F_0 ~ F_30000 : [9406594, 9413374, 9403056, 9411723, 9406486, 9407934, 9403646, 9398938, 9397857, 9402484]
F_0 ~ F_40000 : [16719279, 16734411, 16720978, 16726026, 16719794, 16722921, 16714455, 16713027, 16711426, 16717999]
F_0 ~ F_50000 : [26119402, 26143034, 26126777, 26131821, 26123096, 26127116, 26119314, 26118936, 26118561, 26119246]
F_0 ~ F_100000 : [Les limites de mon programme]

J'ai essayé de le réparer à%

F_0 ~ F_10 : [6.667, 26.667, 13.333, 20.0, 6.667, 20.0, 0.0, 0.0, 6.667, 0.0]
F_0 ~ F_100 :[10.075, 12.966, 9.981, 9.422, 10.541, 8.862, 8.955, 10.821, 8.675, 9.701]
F_0 ~ F_1000 : [10.0, 10.211, 10.019, 10.001, 9.958, 10.039, 9.96, 10.096, 9.881, 9.836]
F_0 ~ F_10000 : [10.003, 10.029, 10.004, 10.015, 9.998, 9.997, 9.974, 10.003, 9.988, 9.99]
F_0 ~ F_20000 : [9.998, 10.015, 9.998, 10.008, 10.001, 10.004, 9.995, 9.992, 9.99, 10.0]
F_0 ~ F_30000 :[10.001, 10.009, 9.998, 10.007, 10.001, 10.003, 9.998, 9.993, 9.992, 9.997]
F_0 ~ F_40000 : [10.0, 10.009, 10.001, 10.004, 10.0, 10.002, 9.997, 9.996, 9.995, 9.999]
F_0 ~ F_50000 :[9.998, 10.007, 10.001, 10.003, 9.999, 10.001, 9.998, 9.998, 9.998, 9.998]

Résumé

Il ne semble y avoir aucun parti pris. Je voudrais le garder comme mémo si je fais quelque chose dans la pratique du programme à l'avenir> <

Recommended Posts

Y a-t-il un biais dans les nombres qui apparaissent dans les nombres de Fibonacci?
Y a-t-il un spécial dans scipy? ??
Y a-t-il un secret dans la fréquence des nombres de rapport de circonférence?
Jouez des sons en Python en supposant que le clavier est un clavier de piano
Y a-t-il NaN dans le DataFrame pandas?
Disposez les nombres en forme de spirale
N'y a-t-il pas une valeur par défaut dans le dictionnaire?
Un programme shell qui affiche une séquence de Fibonacci
Y a-t-il une contradiction entre le parti qui protège le peuple de la NHK et le parti qui protège la NHK du peuple?
Vérifiez si la chaîne est un nombre en python
Linux est quelque chose comme ça en premier lieu
Trouvez la partie 575 de Wikipedia en Python
Il y a un modèle que le programme ne s'est pas arrêté lors de l'utilisation du thread Python
L'émulateur Linux "iSH" qui fonctionne sur iPad est un sujet brûlant en moi
Lors de la lecture d'une image avec SimpleITK, il y a un problème s'il y a du japonais dans le chemin
[Golang] Un programme qui détermine le tour avec des nombres aléatoires
L'image est Namekuji
J'ai écrit un script qui divise l'image en deux
Python échouera s'il y a un espace après la barre oblique inverse
Pour vérifier si la clé spécifiée se trouve dans le compartiment spécifié dans Boto 3
Malheureusement, il n'y a pas de sens d'unité dans la méthode where
J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
Quoi qu'il en soit, le journal de communication série le plus rapide est laissé dans le fichier
Supprimer un caractère spécifique en Python s'il s'agit du dernier
Comment déterminer qu'une clé croisée a été entrée dans Python3
Un minuteur (ticker) qui peut être utilisé sur le terrain (peut être utilisé n'importe où)
Une fonction qui mesure le temps de traitement d'une méthode en python
L'histoire selon laquelle le comportement d'héritage est assez différent dans chaque langue
Quoi de neuf dans datetime qui est un peu plus utile dans Python 3
[Golang] Vérifiez si une chaîne de caractères spécifique est incluse dans la chaîne de caractères
Langage de programmation dont les jeunes auront besoin à l'avenir
Il n'y a pas de commutateur en python
Vérifier s'il y a un symbole spécifique dans le fichier exécutable et ses bibliothèques dépendantes (version simplifiée)
Que faire s'il y a un décimal dans python json .dumps
Notez que GoogleMap.getProjection dans l'API Google Maps Android n'est pas un singleton
L'espace est-il remplacé par un signe plus ou% 20 dans le traitement du codage en pourcentage?
Mémo DJango: Depuis le début (édition de l'écran de gestion) Il y a un mystère
Estimer la probabilité qu'une pièce apparaisse en utilisant MCMC
Fonction Eval () qui calcule une chaîne de caractères comme expression en python
Qu'est-ce qu'une bibliothèque en langage C? Quelles informations sont ouvertes au public?
Classe qui atteint l'API de DMM
Exécuter l'interpréteur Python dans le script
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Hash en Perl est un dictionnaire en Python
[python] [meta] Le type de python est-il un type?
Projet Euler # 2 "Even Fibonacci Number" en Python
[Python] Un programme qui arrondit le score
Il n'y a pas de telnet! À ce moment-là
La date n'est pas affichée correctement dans matplotlib.
Trouvez un bâtiment de la même hauteur que Shin Godzilla sur Google Earth
Créez un BOT qui affiche le nombre de personnes infectées dans le nouveau Corona
[Django] Créez un formulaire qui remplit automatiquement l'adresse à partir du code postal
Affichons un template simple idéal pour le premier Django
[Python] Un programme qui calcule la différence entre les valeurs totales diagonales
Correspondance de l'événement selon lequel le résultat de form.is_valid () est toujours False dans le système Django2