Objectif
Générez ( N) des segments de ligne aléatoires de longueur uniforme ( l), vérifiez s'ils croisent les tlignes parallèles équidistantes ( ).
Simulation
Que simulons-nous? L'aiguille de Buffon . Lissez le sable dans votre bac à sable, tracez un ensemble de lignes parallèles également espacées (appelez la distance entre les deux t). Prenez un bâton droit de longueur let déposez-le Nfois dans le bac à sable. Soit le nombre de fois qu'il a franchi une ligne c. Alors Pi = (2 * l * n) / (t * c)!
Comment simulons-nous cela?
- Prendre connaissance
N,t,l - Avec
N, t, ltous des entiers positifs - Procédez comme suit
N:- Générer une coordonnée entière uniformément aléatoire
x,y - Avec
1 <= x, y <= 10^6 x,yest le centre d'un segment de ligne de longueurl- Générer un entier uniformément aléatoire
a - Avec
1 <= a <= 180 - Soit
Ple point où le segment de ligne traverserait l'axe des x - Alors
ac'est l'angle(x,y), P, (inf,0)
- Générer une coordonnée entière uniformément aléatoire
- Compter le nombre
cde segments de ligne qui traversent la lignex = i*tpour tout entieri - Revenir
(2 * l * N) / (t * c)
spécification
- Contribution
- Flexible, saisissez les données de n'importe quelle manière standard (par exemple, paramètre de fonction, STDIN) et dans n'importe quel format standard (par exemple chaîne, binaire)
- Production
- Flexible, donne une sortie de n'importe quelle manière standard (par exemple retour, impression)
- Les espaces blancs, les espaces blancs arrière et avant sont acceptables
- Précision, veuillez fournir au moins 4 décimales de précision (c.-à-d.
3.1416)
- Notation
- Le code le plus court gagne!
Cas de test
Votre sortie peut ne pas correspondre à ceux-ci, en raison du hasard. Mais en moyenne, vous devriez obtenir cette précision pour la valeur donnée de N, t, l.
Input (N,t,l) -> Output
----------- ------
10,10,5 -> ?.????
10,100,50 -> ?.????
1000,1000,600 -> 3.????
10000,1000,700 -> 3.1???
100000,1000,700 -> 3.14??
TL; DR
Ces défis sont des simulations d'algorithmes qui ne nécessitent que la nature et votre cerveau (et peut-être quelques ressources réutilisables) pour approximer Pi. Si vous avez vraiment besoin de Pi pendant l'apocalypse zombie, ces méthodes ne gaspillent pas de munitions ! Il y a neuf défis au total.
apeut-elle également être créée par une autre méthode, si elle est uniforme? (en pensant à une bulle de Gauss 2D)
t > l? Deux solutions ci-dessous font cette hypothèse, ce qui simplifie un peu la vérification de l'intersection.

