Skocz do zawartości

Recommended Posts

Napisano
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

Napisano

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));
        }
    }
}

 

Napisano

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();

    }
}

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...