Mercurial > hg > jslab
annotate src/samer/maths/random/PowerLaw.java @ 8:5e3cbbf173aa tip
Reorganise some more
author | samer |
---|---|
date | Fri, 05 Apr 2019 22:41:58 +0100 |
parents | bf79fb79ee13 |
children |
rev | line source |
---|---|
samer@0 | 1 /* |
samer@0 | 2 * Copyright (c) 2000, Samer Abdallah, King's College London. |
samer@0 | 3 * All rights reserved. |
samer@0 | 4 * |
samer@0 | 5 * This software is provided AS iS and WITHOUT ANY WARRANTY; |
samer@0 | 6 * without even the implied warranty of MERCHANTABILITY or |
samer@0 | 7 * FITNESS FOR A PARTICULAR PURPOSE. |
samer@0 | 8 */ |
samer@0 | 9 |
samer@0 | 10 package samer.maths.random; |
samer@0 | 11 import samer.core.types.*; |
samer@0 | 12 import java.util.*; |
samer@0 | 13 |
samer@0 | 14 /* |
samer@0 | 15 * Generates random numbers from a single-sider power-law |
samer@0 | 16 * with a lower cut-off, but no upper cut-off. The |
samer@0 | 17 * exponent must therefore be strictly less than 1. |
samer@0 | 18 */ |
samer@0 | 19 public class PowerLaw extends BaseRandom implements Observer |
samer@0 | 20 { |
samer@0 | 21 VDouble min = new VDouble("min",1); |
samer@0 | 22 VDouble D = new VDouble("exponent",1); |
samer@0 | 23 double a, b; |
samer@0 | 24 |
samer@0 | 25 public void dispose() { min.dispose(); D.dispose(); } |
samer@0 | 26 public double next() { return a*Math.pow(rnd.nextDouble(),b); } |
samer@0 | 27 |
samer@0 | 28 public PowerLaw() |
samer@0 | 29 { |
samer@0 | 30 min.addObserver(this); |
samer@0 | 31 D.addObserver(this); |
samer@0 | 32 update(null,null); |
samer@0 | 33 } |
samer@0 | 34 |
samer@0 | 35 public void update(Observable o, Object oo) { |
samer@0 | 36 a=min.value; |
samer@0 | 37 b=-1/D.value; |
samer@0 | 38 } |
samer@0 | 39 } |