怎么在构造方法中使用随机函数,实现喷的作用

class PenHu extends Graph {
ArrayList point = new ArrayList<>();

public PenHu() {
    super();
}

public PenHu(String type, Color color, float stroke, boolean fill,
        Point start, Point end) {
    super(type, color, stroke, fill, start, end);
}

@Override
void draw(Graphics2D g) {
     Random r= new Random();
     for(int i=0;i<20;i++){
     int x1= r.nextInt(30);
     int y1= r.nextInt(30); 
     g.setPaint(color);
     g.setStroke(new BasicStroke(stroke));
     if (point.size() > 1) {
         for (Point e : point) {
      g.drawLine(x1+e.x, y1+e.y,x1+e.x, y1+e.y);
       }
     }
   }
}       

@Override
void addPoint() {
    point.add(end);
}

}

做了一个画图工具的喷壶,但是每用一次喷壶,所有的点的位置都会改变?
怎么修改这段代码?

void draw(Graphics2D g) {
     Random r= new Random();    //这里就是随机函数。。。

不让点动的就那就设置一个变量。。。来固定第一次的值!!!

举例:

 class Test
{
public:
    Test();
    Test(bool bStatus);
    void fun();
public:
    bool m_bRandom;
};

Test::Test()
{
    m_bRandom = TRUE;
}

Test::Test(bool bStatus)
{
    m_bRandom = bStatus;
}

void Test::fun()
{
    if (m_bRandom)
    {
        printf("Random it ture\n");
    }
    else
    {
        printf("Random it false\n");
    }
}


int main()
{
    Test T;
    T.fun();
}