Piin laskeminen Monte Carlo-menetelmällä

Tähän lienee jossain myös javalla ratkaisu, mutta 9-luokan taulukkolaskentakurssin innoittamana tein ohjelman javalle, joka laskee piin likiarvon Monte Carlo-menetelmällä. Menetelmällä on mielenkiintoista laskea piin likiarvoa myös taulukkolaskentaohjelmallakin (se on siis melko haastavaa…).

[java]
import java.io.*;

class Monte
{
public static void main(String args[]) throws IOException
{
int sisalla=0, lkm;
double x, y;
BufferedReader lukija = new BufferedReader(new
InputStreamReader(System.in));

System.out.print(”Montako pistettä:”);
lkm = Integer.parseInt(lukija.readLine());

for (int i=0; i < lkm; i++) { x = Math.random(); y = Math.random(); if (Math.sqrt(x*x+y*y) <= 1) { sisalla++; } } System.out.println("Sisällä oli "+sisalla+" pistetta"); System.out.println("Piin likiarvoksi tulee "+sisalla+"/"+lkm+"*4="+((double)sisalla/(double)lkm*4.0)); } } [/java]

Linux-mainoksia

Tuli vastaan pari Linux-mainosta, jaanpa ne teillekin 🙂

”collecting data is the first step towards wisdom, sharing data is the first step towards community.”

[coolplayer]http://www.youtube.com/watch?v=EwL0G9wK8j4[/coolplayer]

[coolplayer]http://www.youtube.com/watch?v=uBUgEx_91BU[/coolplayer]

Permutaatiot rekursiivisella funktiolla

Tulipa kokeiltua permutaatioiden tekemistä javalla. Netistä ei löytynyt ihan suoraa ratkaisua Javalle, joten piti itse kehitellä.

[java]
class Permutointi
{
static int metodikutsuja = 0, permutaatioita = 0;

public static void main(String[] args)
{
String merkkijono = ”abcde”;

permutoi(merkkijono, ””);

System.out.println(”Permutaatioita: ” + permutaatioita);
System.out.println(”Metodikutsuja: ” + metodikutsuja);

}

static void permutoi(String jono, String alku)
{
String uusi_alku=””, lyhyempi=””;

metodikutsuja++;

if (jono.length() == 0)
{
}
else if (jono.length() == 1)
{
System.out.println(alku+””+jono.charAt(0));
permutaatioita++;
}
else if (jono.length() == 2)
{
System.out.println(alku+””+jono.charAt(0)+””+jono.charAt(1));
permutaatioita++;

System.out.println(alku+””+jono.charAt(1)+””+jono.charAt(0));
permutaatioita++;
}
else
{
for (int i=0; i