Calculate Pi using Monte CarloMonte Carlo virus infection simulationMultithreaded Monte Carlo pi approximation with own pseudorandom number generatorMultithreaded Monte Carlo pi approximation with own pseudorandom number generator - follow upForward Monte Carlo Algorithm in C++Monte Carlo simulation to approximate the value of PICalculate gcd of two numbersMultithreaded Monte-Carlo IntegrationCalculate the continued fraction using the function indicatorsC++ implementation of Monte Carlo Tree Search with Python wrapperFilling up a hand with random cards that are not yet drawn - Monte Carlo

"Marked down as someone wanting to sell shares." What does that mean?

Calculate Pi using Monte Carlo

God... independent

Reason why a kingside attack is not justified

When is the exact date for EOL of Ubuntu 14.04 LTS?

Comic-book: Kids find a dead female superhero in the woods

Would this string work as string?

Exposing a company lying about themselves in a tightly knit industry (videogames) : Is my career at risk on the long run?

Box half filled color

If the Dominion rule using their Jem'Hadar troops, why is their life expectancy so low?

Extract substring according to regexp with sed or grep

Do people actually use the word "kaputt" in conversation?

I keep switching characters, how do I stop?

How can I extract data from text file?

Connection Between Knot Theory and Number Theory

A seasonal riddle

What is the meaning of "You've never met a graph you didn't like?"

What (if any) is the reason to buy in small local stores?

What is the tangent at a sharp point on a curve?

What properties make a magic weapon befit a Rogue more than a DEX-based Fighter?

Why didn’t Eve recognize the little cockroach as a living organism?

Boss fired me and is begging for me to come back - how much of a raise is reasonable?

C++ lambda syntax

Hot air balloons as primitive bombers



Calculate Pi using Monte Carlo


Monte Carlo virus infection simulationMultithreaded Monte Carlo pi approximation with own pseudorandom number generatorMultithreaded Monte Carlo pi approximation with own pseudorandom number generator - follow upForward Monte Carlo Algorithm in C++Monte Carlo simulation to approximate the value of PICalculate gcd of two numbersMultithreaded Monte-Carlo IntegrationCalculate the continued fraction using the function indicatorsC++ implementation of Monte Carlo Tree Search with Python wrapperFilling up a hand with random cards that are not yet drawn - Monte Carlo













2












$begingroup$


#include <iostream>
#include <iomanip>


#ifdef USE_OLD_RAND

#include <stdlib.h>
inline double getRandDart() return rand() * 1.0 / RAND_MAX;

#else

#include <random>
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0,1);
inline double getRandDart() return distribution(generator);

#endif


// Monte Carlo Simulator to estimate the value of PI.
//
// If we have a circle with a radius of 1.
// Then the smallest square that encloses the circle as sides of length 2.
//
// Area of circle pi r^2 = pi
// Area of square 2.r.2.r = 4
//
// Ratio of overlapping area: pi/4
//
// If we throw darts randomly at a dart board (with an even distribution) and always hit the square.
// Then the ratio of darts falling into the circle should be pi/4 of the total number of darts thrown.
//
// pi/4 * countInSquare = countInCircle
//
// pi = 4 . countInCircle / countInSquare
//
// To simplify the maths.
// We will set the center point as 0,0 and only use the top right quadrant of the circle.
// We have 1/4 the size of the square and circle but the same maths still apply.
//
// A dart thrown has a random x/y value in the range 0->1 (top right quadrant).
// A dart is outside the circle if x^2 + y^2 > 1 (note 1^2 is 1)
//

int main()


long countInSquare = 0;
long countInCircle = 0;

for(long iteration = 0; iteration <= 10'000'000'000; ++iteration)
double x = getRandDart();
double y = getRandDart();

double d = (x * x) + (y * y);

countInSquare += 1;
countInCircle += (d >= 1.0) ? 0 : 1;

if (iteration % 10'000'000 == 0)
std::cout << iteration << " " << (4.0 * countInCircle / countInSquare) << "n";


std::cout << "nn" << std::setprecision(9) << (4.0 * countInCircle / countInSquare) << "n";




Output:



> ./a.out
9990000000 3.14158
10000000000 3.14158


3.14158355









share|improve this question











$endgroup$











  • $begingroup$
    @Juho The question is: Please review the code. Any comments about the code would be useful.
    $endgroup$
    – Martin York
    1 hour ago











  • $begingroup$
    Your comment says that xx+yy==1 is not outside the circle (hence it is inside), but your code considers it outside. Which way is the correct interpretation?
    $endgroup$
    – 1201ProgramAlarm
    44 mins ago










  • $begingroup$
    @1201ProgramAlarm: Good catch. Stupid comments; why don't they compile so we can check the code matches the comments.
    $endgroup$
    – Martin York
    42 mins ago











  • $begingroup$
    There are languages where that's kind of true (but also means that you can get syntax errors with your comments)
    $endgroup$
    – Foon
    10 mins ago















2












$begingroup$


#include <iostream>
#include <iomanip>


#ifdef USE_OLD_RAND

#include <stdlib.h>
inline double getRandDart() return rand() * 1.0 / RAND_MAX;

#else

#include <random>
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0,1);
inline double getRandDart() return distribution(generator);

#endif


// Monte Carlo Simulator to estimate the value of PI.
//
// If we have a circle with a radius of 1.
// Then the smallest square that encloses the circle as sides of length 2.
//
// Area of circle pi r^2 = pi
// Area of square 2.r.2.r = 4
//
// Ratio of overlapping area: pi/4
//
// If we throw darts randomly at a dart board (with an even distribution) and always hit the square.
// Then the ratio of darts falling into the circle should be pi/4 of the total number of darts thrown.
//
// pi/4 * countInSquare = countInCircle
//
// pi = 4 . countInCircle / countInSquare
//
// To simplify the maths.
// We will set the center point as 0,0 and only use the top right quadrant of the circle.
// We have 1/4 the size of the square and circle but the same maths still apply.
//
// A dart thrown has a random x/y value in the range 0->1 (top right quadrant).
// A dart is outside the circle if x^2 + y^2 > 1 (note 1^2 is 1)
//

int main()


long countInSquare = 0;
long countInCircle = 0;

for(long iteration = 0; iteration <= 10'000'000'000; ++iteration)
double x = getRandDart();
double y = getRandDart();

double d = (x * x) + (y * y);

countInSquare += 1;
countInCircle += (d >= 1.0) ? 0 : 1;

if (iteration % 10'000'000 == 0)
std::cout << iteration << " " << (4.0 * countInCircle / countInSquare) << "n";


std::cout << "nn" << std::setprecision(9) << (4.0 * countInCircle / countInSquare) << "n";




Output:



> ./a.out
9990000000 3.14158
10000000000 3.14158


3.14158355









share|improve this question











$endgroup$











  • $begingroup$
    @Juho The question is: Please review the code. Any comments about the code would be useful.
    $endgroup$
    – Martin York
    1 hour ago











  • $begingroup$
    Your comment says that xx+yy==1 is not outside the circle (hence it is inside), but your code considers it outside. Which way is the correct interpretation?
    $endgroup$
    – 1201ProgramAlarm
    44 mins ago










  • $begingroup$
    @1201ProgramAlarm: Good catch. Stupid comments; why don't they compile so we can check the code matches the comments.
    $endgroup$
    – Martin York
    42 mins ago











  • $begingroup$
    There are languages where that's kind of true (but also means that you can get syntax errors with your comments)
    $endgroup$
    – Foon
    10 mins ago













2












2








2





$begingroup$


#include <iostream>
#include <iomanip>


#ifdef USE_OLD_RAND

#include <stdlib.h>
inline double getRandDart() return rand() * 1.0 / RAND_MAX;

#else

#include <random>
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0,1);
inline double getRandDart() return distribution(generator);

#endif


// Monte Carlo Simulator to estimate the value of PI.
//
// If we have a circle with a radius of 1.
// Then the smallest square that encloses the circle as sides of length 2.
//
// Area of circle pi r^2 = pi
// Area of square 2.r.2.r = 4
//
// Ratio of overlapping area: pi/4
//
// If we throw darts randomly at a dart board (with an even distribution) and always hit the square.
// Then the ratio of darts falling into the circle should be pi/4 of the total number of darts thrown.
//
// pi/4 * countInSquare = countInCircle
//
// pi = 4 . countInCircle / countInSquare
//
// To simplify the maths.
// We will set the center point as 0,0 and only use the top right quadrant of the circle.
// We have 1/4 the size of the square and circle but the same maths still apply.
//
// A dart thrown has a random x/y value in the range 0->1 (top right quadrant).
// A dart is outside the circle if x^2 + y^2 > 1 (note 1^2 is 1)
//

int main()


long countInSquare = 0;
long countInCircle = 0;

for(long iteration = 0; iteration <= 10'000'000'000; ++iteration)
double x = getRandDart();
double y = getRandDart();

double d = (x * x) + (y * y);

countInSquare += 1;
countInCircle += (d >= 1.0) ? 0 : 1;

if (iteration % 10'000'000 == 0)
std::cout << iteration << " " << (4.0 * countInCircle / countInSquare) << "n";


std::cout << "nn" << std::setprecision(9) << (4.0 * countInCircle / countInSquare) << "n";




Output:



> ./a.out
9990000000 3.14158
10000000000 3.14158


3.14158355









share|improve this question











$endgroup$




#include <iostream>
#include <iomanip>


#ifdef USE_OLD_RAND

#include <stdlib.h>
inline double getRandDart() return rand() * 1.0 / RAND_MAX;

#else

#include <random>
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0,1);
inline double getRandDart() return distribution(generator);

#endif


// Monte Carlo Simulator to estimate the value of PI.
//
// If we have a circle with a radius of 1.
// Then the smallest square that encloses the circle as sides of length 2.
//
// Area of circle pi r^2 = pi
// Area of square 2.r.2.r = 4
//
// Ratio of overlapping area: pi/4
//
// If we throw darts randomly at a dart board (with an even distribution) and always hit the square.
// Then the ratio of darts falling into the circle should be pi/4 of the total number of darts thrown.
//
// pi/4 * countInSquare = countInCircle
//
// pi = 4 . countInCircle / countInSquare
//
// To simplify the maths.
// We will set the center point as 0,0 and only use the top right quadrant of the circle.
// We have 1/4 the size of the square and circle but the same maths still apply.
//
// A dart thrown has a random x/y value in the range 0->1 (top right quadrant).
// A dart is outside the circle if x^2 + y^2 > 1 (note 1^2 is 1)
//

int main()


long countInSquare = 0;
long countInCircle = 0;

for(long iteration = 0; iteration <= 10'000'000'000; ++iteration)
double x = getRandDart();
double y = getRandDart();

double d = (x * x) + (y * y);

countInSquare += 1;
countInCircle += (d >= 1.0) ? 0 : 1;

if (iteration % 10'000'000 == 0)
std::cout << iteration << " " << (4.0 * countInCircle / countInSquare) << "n";


std::cout << "nn" << std::setprecision(9) << (4.0 * countInCircle / countInSquare) << "n";




Output:



> ./a.out
9990000000 3.14158
10000000000 3.14158


3.14158355






c++ numerical-methods






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 27 mins ago









200_success

130k17154419




130k17154419










asked 1 hour ago









Martin YorkMartin York

73.7k488270




73.7k488270











  • $begingroup$
    @Juho The question is: Please review the code. Any comments about the code would be useful.
    $endgroup$
    – Martin York
    1 hour ago











  • $begingroup$
    Your comment says that xx+yy==1 is not outside the circle (hence it is inside), but your code considers it outside. Which way is the correct interpretation?
    $endgroup$
    – 1201ProgramAlarm
    44 mins ago










  • $begingroup$
    @1201ProgramAlarm: Good catch. Stupid comments; why don't they compile so we can check the code matches the comments.
    $endgroup$
    – Martin York
    42 mins ago











  • $begingroup$
    There are languages where that's kind of true (but also means that you can get syntax errors with your comments)
    $endgroup$
    – Foon
    10 mins ago
















  • $begingroup$
    @Juho The question is: Please review the code. Any comments about the code would be useful.
    $endgroup$
    – Martin York
    1 hour ago











  • $begingroup$
    Your comment says that xx+yy==1 is not outside the circle (hence it is inside), but your code considers it outside. Which way is the correct interpretation?
    $endgroup$
    – 1201ProgramAlarm
    44 mins ago










  • $begingroup$
    @1201ProgramAlarm: Good catch. Stupid comments; why don't they compile so we can check the code matches the comments.
    $endgroup$
    – Martin York
    42 mins ago











  • $begingroup$
    There are languages where that's kind of true (but also means that you can get syntax errors with your comments)
    $endgroup$
    – Foon
    10 mins ago















$begingroup$
@Juho The question is: Please review the code. Any comments about the code would be useful.
$endgroup$
– Martin York
1 hour ago





$begingroup$
@Juho The question is: Please review the code. Any comments about the code would be useful.
$endgroup$
– Martin York
1 hour ago













$begingroup$
Your comment says that xx+yy==1 is not outside the circle (hence it is inside), but your code considers it outside. Which way is the correct interpretation?
$endgroup$
– 1201ProgramAlarm
44 mins ago




$begingroup$
Your comment says that xx+yy==1 is not outside the circle (hence it is inside), but your code considers it outside. Which way is the correct interpretation?
$endgroup$
– 1201ProgramAlarm
44 mins ago












$begingroup$
@1201ProgramAlarm: Good catch. Stupid comments; why don't they compile so we can check the code matches the comments.
$endgroup$
– Martin York
42 mins ago





$begingroup$
@1201ProgramAlarm: Good catch. Stupid comments; why don't they compile so we can check the code matches the comments.
$endgroup$
– Martin York
42 mins ago













$begingroup$
There are languages where that's kind of true (but also means that you can get syntax errors with your comments)
$endgroup$
– Foon
10 mins ago




$begingroup$
There are languages where that's kind of true (but also means that you can get syntax errors with your comments)
$endgroup$
– Foon
10 mins ago










1 Answer
1






active

oldest

votes


















4












$begingroup$

One could consider at least the following points:



  • Instead of including <stdlib.h>, I'd include <cstdlib>.


  • In getRandDart(), it might in this case be more readable to do static_cast<double>(rand()) / RAND_MAX; instead of multiplying by 1.0.


  • In the for loop, all of x, y and d can be const, so I'd make them const. This has the potential to protect the programmer from unintended mistakes, and can sometimes allow the compiler to optimize better.


  • When you increment by one (in countInSquare += 1;), it makes more sense to use the ++ operator, i.e., to just write ++countInSquare. This is more idiomatic and protects us from unintended mistakes: ++ conveys the meaning of increment (by one), whereas with += we might accidentally write += 2; and that would be perfectly valid (but not what we wanted).


  • Regardless of the above point, notice that during the for-loop, it holds that iteration == countInSquare. So strictly speaking, the variable countInSquare is unnecessary and could be replaced by just iteration when needed.


  • You could consider making the number of iterations and the second operand of the % operand constants to allow for easier modification and perhaps to slightly improve readability.


  • Instead of typing (4.0 * countInCircle / countInSquare) twice, we could make a function that takes the two variables as parameters. This would allow us to save some typing, and again to protect us from unintended mistakes.






share|improve this answer











$endgroup$












  • $begingroup$
    Thanks. I like all those points.
    $endgroup$
    – Martin York
    42 mins ago










Your Answer





StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");

StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215784%2fcalculate-pi-using-monte-carlo%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









4












$begingroup$

One could consider at least the following points:



  • Instead of including <stdlib.h>, I'd include <cstdlib>.


  • In getRandDart(), it might in this case be more readable to do static_cast<double>(rand()) / RAND_MAX; instead of multiplying by 1.0.


  • In the for loop, all of x, y and d can be const, so I'd make them const. This has the potential to protect the programmer from unintended mistakes, and can sometimes allow the compiler to optimize better.


  • When you increment by one (in countInSquare += 1;), it makes more sense to use the ++ operator, i.e., to just write ++countInSquare. This is more idiomatic and protects us from unintended mistakes: ++ conveys the meaning of increment (by one), whereas with += we might accidentally write += 2; and that would be perfectly valid (but not what we wanted).


  • Regardless of the above point, notice that during the for-loop, it holds that iteration == countInSquare. So strictly speaking, the variable countInSquare is unnecessary and could be replaced by just iteration when needed.


  • You could consider making the number of iterations and the second operand of the % operand constants to allow for easier modification and perhaps to slightly improve readability.


  • Instead of typing (4.0 * countInCircle / countInSquare) twice, we could make a function that takes the two variables as parameters. This would allow us to save some typing, and again to protect us from unintended mistakes.






share|improve this answer











$endgroup$












  • $begingroup$
    Thanks. I like all those points.
    $endgroup$
    – Martin York
    42 mins ago















4












$begingroup$

One could consider at least the following points:



  • Instead of including <stdlib.h>, I'd include <cstdlib>.


  • In getRandDart(), it might in this case be more readable to do static_cast<double>(rand()) / RAND_MAX; instead of multiplying by 1.0.


  • In the for loop, all of x, y and d can be const, so I'd make them const. This has the potential to protect the programmer from unintended mistakes, and can sometimes allow the compiler to optimize better.


  • When you increment by one (in countInSquare += 1;), it makes more sense to use the ++ operator, i.e., to just write ++countInSquare. This is more idiomatic and protects us from unintended mistakes: ++ conveys the meaning of increment (by one), whereas with += we might accidentally write += 2; and that would be perfectly valid (but not what we wanted).


  • Regardless of the above point, notice that during the for-loop, it holds that iteration == countInSquare. So strictly speaking, the variable countInSquare is unnecessary and could be replaced by just iteration when needed.


  • You could consider making the number of iterations and the second operand of the % operand constants to allow for easier modification and perhaps to slightly improve readability.


  • Instead of typing (4.0 * countInCircle / countInSquare) twice, we could make a function that takes the two variables as parameters. This would allow us to save some typing, and again to protect us from unintended mistakes.






share|improve this answer











$endgroup$












  • $begingroup$
    Thanks. I like all those points.
    $endgroup$
    – Martin York
    42 mins ago













4












4








4





$begingroup$

One could consider at least the following points:



  • Instead of including <stdlib.h>, I'd include <cstdlib>.


  • In getRandDart(), it might in this case be more readable to do static_cast<double>(rand()) / RAND_MAX; instead of multiplying by 1.0.


  • In the for loop, all of x, y and d can be const, so I'd make them const. This has the potential to protect the programmer from unintended mistakes, and can sometimes allow the compiler to optimize better.


  • When you increment by one (in countInSquare += 1;), it makes more sense to use the ++ operator, i.e., to just write ++countInSquare. This is more idiomatic and protects us from unintended mistakes: ++ conveys the meaning of increment (by one), whereas with += we might accidentally write += 2; and that would be perfectly valid (but not what we wanted).


  • Regardless of the above point, notice that during the for-loop, it holds that iteration == countInSquare. So strictly speaking, the variable countInSquare is unnecessary and could be replaced by just iteration when needed.


  • You could consider making the number of iterations and the second operand of the % operand constants to allow for easier modification and perhaps to slightly improve readability.


  • Instead of typing (4.0 * countInCircle / countInSquare) twice, we could make a function that takes the two variables as parameters. This would allow us to save some typing, and again to protect us from unintended mistakes.






share|improve this answer











$endgroup$



One could consider at least the following points:



  • Instead of including <stdlib.h>, I'd include <cstdlib>.


  • In getRandDart(), it might in this case be more readable to do static_cast<double>(rand()) / RAND_MAX; instead of multiplying by 1.0.


  • In the for loop, all of x, y and d can be const, so I'd make them const. This has the potential to protect the programmer from unintended mistakes, and can sometimes allow the compiler to optimize better.


  • When you increment by one (in countInSquare += 1;), it makes more sense to use the ++ operator, i.e., to just write ++countInSquare. This is more idiomatic and protects us from unintended mistakes: ++ conveys the meaning of increment (by one), whereas with += we might accidentally write += 2; and that would be perfectly valid (but not what we wanted).


  • Regardless of the above point, notice that during the for-loop, it holds that iteration == countInSquare. So strictly speaking, the variable countInSquare is unnecessary and could be replaced by just iteration when needed.


  • You could consider making the number of iterations and the second operand of the % operand constants to allow for easier modification and perhaps to slightly improve readability.


  • Instead of typing (4.0 * countInCircle / countInSquare) twice, we could make a function that takes the two variables as parameters. This would allow us to save some typing, and again to protect us from unintended mistakes.







share|improve this answer














share|improve this answer



share|improve this answer








edited 37 mins ago

























answered 57 mins ago









JuhoJuho

1,201410




1,201410











  • $begingroup$
    Thanks. I like all those points.
    $endgroup$
    – Martin York
    42 mins ago
















  • $begingroup$
    Thanks. I like all those points.
    $endgroup$
    – Martin York
    42 mins ago















$begingroup$
Thanks. I like all those points.
$endgroup$
– Martin York
42 mins ago




$begingroup$
Thanks. I like all those points.
$endgroup$
– Martin York
42 mins ago

















draft saved

draft discarded
















































Thanks for contributing an answer to Code Review Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215784%2fcalculate-pi-using-monte-carlo%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Bett Inhaltsverzeichnis Geschichte | Bettformen | Bettgrößen | Andere Bezeichnungen | Bettenmangel | Betten in der bildenden Kunst | Schlafmedizinische Gesichtspunkte | Siehe auch | Literatur | Weblinks | Einzelnachweise | NavigationsmenüBett, Bettstatt, BettstelleCommons: BettBabybetten: Anwendung, Ausstattungsmerkmale und VergleichskriterienWasserbetten. Vorurteile im TestHapfnNursch10.1007/s11818-012-0584-74006250-8AKS4329276-8

Luksemburg Sisukord Nimi | Asend | Loodus | Riigikord | Haldusjaotus | Rahvastik | Riigikaitse | Majandus | Taristu | Ajalugu | Eesti ja Luksemburgi suhted | Haridus | Kultuur | Vaata ka | Viited | Välislingid | Navigeerimismenüü50° N, 6° EÜlevaade Luksemburgi kaitsealadest.Luksemburgi rahvaarv. Statistikaamet.World Bank'i andmebaasÜlevaade Luksemburgi loodusest.Ülevaade Luksemburgi metsadest.Guy Colling. "Red List of the Vascular Plants of Luxembourg." Travaux scientifiques du Musée national d’histoire naturelle Luxembourg. 2005.Luxembourg’s biodiversity at risk.Maailma kahepaiksete andmebaas.Denis Lepage. "Luxembourg." Avibase.Ülevaade temperatuuridest. Luksemburgi meteoroloogiateenistus.Ülevaade Luksemburgist. Euroopa Liidu esinduse koduleht.Système politique. TerritoireÜlevaade Luksemburgi rahvastikust. Luksemburgi statistikaamet.Luksemburgi rahvastik. Luksemburgi statistikaamet.The World FactbookMonique Borsenberger, Paul Dickes. "Religions au Luxembourg. Quelle évolution entre 1999-2008". Luksemburgi statistikaamet. 2011.Luksemburgi peapiiskopkond. Catholic-Hierarchy.Luksemburgi armee koduleht.Luksemburgi armee relvastus.Eesti Välisministeerium.Luksemburgi rahvastik. Luksemburgi statistikaamet.Luksemburgi Eesti Seltsi koduleht.Helen Eelrand. "Raadio, mis muutis maailma." Eesti Päevaleht. 13. märts 2004.Ülevaade Luksemburgi haridussüsteemist.Ülevaade Luksemburgi keskkoolidest.Luksemburgr

Valle di Casies Indice Geografia fisica | Origini del nome | Storia | Società | Amministrazione | Sport | Note | Bibliografia | Voci correlate | Altri progetti | Collegamenti esterni | Menu di navigazione46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)Sito istituzionaleAstat Censimento della popolazione 2011 - Determinazione della consistenza dei tre gruppi linguistici della Provincia Autonoma di Bolzano-Alto Adige - giugno 2012Numeri e fattiValle di CasiesDato IstatTabella dei gradi/giorno dei Comuni italiani raggruppati per Regione e Provincia26 agosto 1993, n. 412Heraldry of the World: GsiesStatistiche I.StatValCasies.comWikimedia CommonsWikimedia CommonsValle di CasiesSito ufficialeValle di CasiesMM14870458910042978-6