diff --git a/src/main/java/avatartranslator/AvatarRandom.java b/src/main/java/avatartranslator/AvatarRandom.java
index 71c60bd60257fa83e9eb2cf9e8a55b4da27da138..3082e3c4dcb957c8c8332203f9ddd757ac0e1b38 100644
--- a/src/main/java/avatartranslator/AvatarRandom.java
+++ b/src/main/java/avatartranslator/AvatarRandom.java
@@ -57,12 +57,14 @@ public class AvatarRandom extends AvatarStateMachineElement {
     public final static int RANDOM_TRIANGULAR_LAW = 1;
     public final static int RANDOM_GAUSSIAN_LAW = 2;
     public final static int RANDOM_LOG_NORMAL_LAW = 3;
-    public final static String[] DISTRIBUTION_LAWS = {"Uniform", "Triangular", "Gaussian", "Log normal"};
-    public final static String[] DISTRIBUTION_LAWS_SHORT = {"", " ^", "ĝ", "ln"};
-
-    public final static int[] NB_OF_EXTRA_ATTRIBUTES = {0, 1, 1, 2};
-    public final static String[] LABELS_OF_EXTRA_ATTRIBUTES_1 = {"", "triangle top", "standard deviation", "standard deviation"};
-    public final static String[] LABELS_OF_EXTRA_ATTRIBUTES_2 = {"", "", "", "mean"};
+    public final static int RANDOM_EXPONENTIAL_LAW = 4;
+    public final static int RANDOM_WEIBULL_LAW = 5;
+    public final static String[] DISTRIBUTION_LAWS = {"Uniform", "Triangular", "Gaussian", "Log normal", "Exponential", "Weibull"};
+    public final static String[] DISTRIBUTION_LAWS_SHORT = {"", " ^", "ĝ", "ln", "e^", "w"};
+
+    public final static int[] NB_OF_EXTRA_ATTRIBUTES = {0, 1, 1, 2, 1, 2};
+    public final static String[] LABELS_OF_EXTRA_ATTRIBUTES_1 = {"", "triangle top", "standard deviation", "standard deviation", "mean", "shape"};
+    public final static String[] LABELS_OF_EXTRA_ATTRIBUTES_2 = {"", "", "", "mean", "", "scale"};
     protected int functionId;
     protected String extraAttribute1;
     protected String extraAttribute2;
diff --git a/src/main/java/avatartranslator/directsimulation/AvatarSimulationBlock.java b/src/main/java/avatartranslator/directsimulation/AvatarSimulationBlock.java
index 21f5616d1d3aee34a1856373507d01d58a01e04b..c251c3074ee91ee51ee24dfb9b72ec188accf61d 100644
--- a/src/main/java/avatartranslator/directsimulation/AvatarSimulationBlock.java
+++ b/src/main/java/avatartranslator/directsimulation/AvatarSimulationBlock.java
@@ -755,6 +755,20 @@ public class AvatarSimulationBlock {
                     TraceManager.addDev("Exception on log normal: " + e.getMessage());
                     return minV;
                 }
+            case AvatarRandom.RANDOM_EXPONENTIAL_LAW:
+                try {
+                    return (int) (Math.floor(MyMath.exponentialDistribution( (double) (minV), (double) (maxV), extra1) ));
+                } catch (Exception e) {
+                    TraceManager.addDev("Exception on exponential distribution: " + e.getMessage());
+                    return minV;
+                }
+            case AvatarRandom.RANDOM_WEIBULL_LAW:
+                try {
+                    return (int) (Math.floor(MyMath.weibullDistribution( (double) (minV), (double) (maxV), extra1, extra2) ));
+                } catch (Exception e) {
+                    TraceManager.addDev("Exception on weibull distribution: " + e.getMessage());
+                    return minV;
+                }
         }
         return minV;
     }
diff --git a/src/main/java/myutil/GraphicLib.java b/src/main/java/myutil/GraphicLib.java
index 71672b7218ac8828bc40baf7f135e7c8a9c73397..12c0165d06e802b6d8e8d6b6830f72234bb1b976 100644
--- a/src/main/java/myutil/GraphicLib.java
+++ b/src/main/java/myutil/GraphicLib.java
@@ -145,12 +145,12 @@ public final class GraphicLib {
         g2.drawLine(x1, y1, x2, y2);
         g2.setStroke(normalStroke);
 
-        // extremite 1
+        // end 1
         if ((type == 0) || (type == 2)) {
             drawArrow(g, x1, y1, x2, y2, head, length, full);
         }
 
-        // extremite 2
+        // end 2
         if ((type == 0) || (type == 1)) {
             drawArrow(g, x2, y2, x1, y1, head, length, full);
         }
diff --git a/src/main/java/myutil/MyMath.java b/src/main/java/myutil/MyMath.java
index f780ca1bbf3cf6281f045eb3b0ea335c9332e84e..da0def5cb4ce6d996b2245f8bf4c1a9cd392780f 100644
--- a/src/main/java/myutil/MyMath.java
+++ b/src/main/java/myutil/MyMath.java
@@ -42,7 +42,7 @@
 package myutil;
 
 import java.util.Random;
-import org.apache.commons.math3.distribution.LogNormalDistribution;
+import org.apache.commons.math3.distribution.*;
 
 /**
  * Class MyMath
@@ -142,6 +142,27 @@ public class MyMath {
         return val;
     }
 
+    public static double exponentialDistribution(double a, double b, double mean) {
+        ExponentialDistribution ed = new ExponentialDistribution(mean);
+        double val = ed.sample();
+        val += a;
+        if (val > b) {
+            return exponentialDistribution(a, b, mean);
+        }
+        return val;
+    }
+
+    public static double weibullDistribution(double a, double b, double shape, double scale) {
+        WeibullDistribution wd = new WeibullDistribution(shape, scale);
+        double val = wd.sample();
+        val += a;
+        if (val > b) {
+            return weibullDistribution(a, b, shape, scale);
+        }
+        return val;
+    }
+
+
 
 
   
diff --git a/src/main/java/ui/ucd/TGConnectorUC.java b/src/main/java/ui/ucd/TGConnectorUC.java
index 9b100d0c63b61fcb1ce3d9b738ae850d56152b7f..69e81ae21af04a0e4103812a76dd8d9e85bf1ccb 100755
--- a/src/main/java/ui/ucd/TGConnectorUC.java
+++ b/src/main/java/ui/ucd/TGConnectorUC.java
@@ -68,7 +68,7 @@ public  abstract class TGConnectorUC extends TGConnector {
     @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
         //g.drawLine(x1, y1, x2, y2);
-        GraphicLib.dashedArrowWithLine(g, 1, 1, 0, x1, y1, x2, y2, false);
+        GraphicLib.dashedArrowWithLine(g, 1, 1, 12, x1, y1, x2, y2, false);
         
         // Indicate semantics 
         w  = g.getFontMetrics().stringWidth(value);