Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.mahout.math.random;
Samples from a Poisson distribution. Should probably not be used for lambda > 1000 or so.
public final class PoissonSampler extends AbstractSamplerFunction {
  private double limit;
  private Multinomial<Integerpartial;
  private final RandomWrapper gen;
  private final PoissonDistribution pd;
  public PoissonSampler(double lambda) {
     = 1;
     = RandomUtils.getRandom();
                                 lambda,
                                 .,
                                 .);
  }
  public Double sample() {
    return sample(.nextDouble());
  }
  double sample(double u) {
    if (u < ) {
      List<WeightedThing<Integer>> steps = Lists.newArrayList();
       = 1;
      int i = 0;
      while (u / 20 < ) {
        double pdf = .probability(i);
         -= pdf;
        steps.add(new WeightedThing<Integer>(ipdf));
        i++;
      }
      steps.add(new WeightedThing<Integer>(steps.size(), ));
       = new Multinomial<Integer>(steps);
    }
    return .sample(u);
  }
New to GrepCode? Check out our FAQ X