Skocz do zawartości

Rozkład wykładniczy


Recommended Posts

import java.util.Random;

public class RozkladWykladniczy {
	public static void main(String... aArgs){
		int lambda = 2;
		Random t = new Random();

		for (int i=0; i<100; i++){

			return -(1/lambda)*Math.log(1-i);

		}

	}
}

 

Wiem, że ten kod nie jest skończony, ale nie mam pojęcia jak wygenerować liczby losowe zmiennoprzecinkowe i wstawic je do wzoru

Link do komentarza
Udostępnij na innych stronach

Najlepiej przygotować metodę, która zwróci wartość, a później wywołać ją w pętli np:

public class RozkladWykladniczy {
    Random t = new Random();
    public double generuj(double lambda) {
        double losowa = t.nextDouble();
        return -(1/lambda)*Math.log(1-losowa);
    }
    public static void main(String[] args) {
        RozkladWykladniczy test = new RozkladWykladniczy();
        for(int i=0; i<100; i++) {
            System.out.println(test.generuj(2));
        }
    }
}

 

Link do komentarza
Udostępnij na innych stronach

A, że temat mnie zainteresował, to dla ciekawych wrzucam jeszcze to. Kod nie jest doskonały i proszę się nie czepiać :)  pisany był w pośpiechu i nie było czasu na zmiany.

import java.util.*;
import java.util.Map.Entry;

/**
 * @author Grzegorz
 */
public class RozkladWykladniczy {
    private Random t;
    public HashMap<String, Integer> map;

    public RozkladWykladniczy() {
        this.t = new Random();
        this.map = new HashMap<>();
    }

    public double generuj(double lambda) {
        return -(1/lambda)*Math.log(1 - t.nextDouble());
    }

    public void setHistogram(){
        /*
        * tworzony jest obiekt DecimalFormat,
        * aby łatwo można było formatować generowane wartości
        * i przy tym obserwować zmiany na histogramie - szoda,
        * że nie graficznym :)
        */
        java.text.DecimalFormat df = new java.text.DecimalFormat();
        df.setMaximumFractionDigits(2);// największa ilość miejsc po przecinku
        df.setMinimumFractionDigits(2);// najmniejsza ilość miejsc po przecinku
        String tmp;
        int value;
        for(int i=0; i<200; i++) {
           tmp = df.format(generuj(2));
           if(!map.containsKey(tmp)) {
               map.put(tmp, 1);
           } else {
               value = map.get(tmp);
               map.replace(tmp, value, ++value);
           }
        }
    }
    public void showHistogram() {
        if(map.isEmpty()) {
            System.out.println("Wartość: 0, Wystąpienia : 0");
        } else {
            for (Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("Wartość : " + entry.getKey() + " Wystąpienia : "+ entry.getValue());
            }
        }
    }
    /*
    * Metodę dodałem, aby łatwiej przeanalizować wyniki
    */
    public void sortujPoWystapieniach() {
        List list = new LinkedList(map.entrySet());
         Collections.sort(list, new Comparator() {
            public int compare(Object o1, Object o2) {
               return ((Comparable) ((Map.Entry) (o2)).getValue())
                  .compareTo(((Map.Entry) (o1)).getValue());
            }
        });
        HashMap sortedHashMap = new LinkedHashMap();
        for (Iterator it = list.iterator(); it.hasNext();) {
            Map.Entry entry = (Map.Entry) it.next();
            sortedHashMap.put(entry.getKey(), entry.getValue());
       }
        map = sortedHashMap;
    }
    public static void main(String[] args) {
        RozkladWykladniczy test = new RozkladWykladniczy();
        test.setHistogram();
        test.sortujPoWystapieniach();
        test.showHistogram();

    }
}
Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...