in bigtop-data-generators/bigpetstore-data-generator/src/main/java/org/apache/bigtop/datagenerators/bigpetstore/generators/purchase/MarkovModelProductCategorySampler.java [82:118]
public MarkovModel<Product> sample() throws Exception
{
generateWeights();
MarkovModelBuilder<Product> builder = new MarkovModelBuilder<Product>();
for(Product product1 : productCategory.getProducts())
{
builder.addStartState(product1, 1.0);
double weightSum = 0.0;
for(Product product2 : productCategory.getProducts())
{
if(!product1.equals(product2))
{
weightSum += productPairWeight(product1, product2);
}
}
for(Product product2 : productCategory.getProducts())
{
double weight = 0.0;
if(!product1.equals(product2))
{
weight = (1.0 - loopbackWeight) * productPairWeight(product1, product2) / weightSum;
}
else
{ weight = loopbackWeight;
}
builder.addTransition(product1, product2, weight);
}
}
return builder.build();
}