root_numpy.random_sample

root_numpy.random_sample(obj, n_samples, seed=None)

Create a random array by sampling a ROOT function or histogram.

Parameters:

obj : TH[1|2|3] or TF[1|2|3]

The ROOT function or histogram to sample.

n_samples : positive int

The number of random samples to generate.

seed : None, positive int or 0, optional (default=None)

The random seed, set via ROOT.gRandom.SetSeed(seed): http://root.cern.ch/root/html/TRandom3.html#TRandom3:SetSeed If 0, the seed will be random. If None (the default), ROOT.gRandom will not be touched and the current seed will be used.

Returns:

array : a numpy array

A numpy array with a shape corresponding to the dimensionality of the function or histogram. A flat array is returned when sampling TF1 or TH1. An array with shape [n_samples, n_dimensions] is returned when sampling TF2, TF3, TH2, or TH3.

Examples

>>> from root_numpy import random_sample
>>> from ROOT import TF1, TF2, TF3
>>> random_sample(TF1("f1", "TMath::DiLog(x)"), 10000, seed=1)
array([ 0.68307934,  0.9988919 ,  0.87198158, ...,  0.50331049,
        0.53895257,  0.57576984])
>>> random_sample(TF2("f2", "sin(x)*sin(y)/(x*y)"), 10000, seed=1)
array([[ 0.93425084,  0.39990616],
       [ 0.00819315,  0.73108525],
       [ 0.00307176,  0.00427081],
       ...,
       [ 0.66931215,  0.0421913 ],
       [ 0.06469985,  0.10253632],
       [ 0.31059832,  0.75892702]])
>>> random_sample(TF3("f3", "sin(x)*sin(y)*sin(z)/(x*y*z)"), 10000, seed=1)
array([[ 0.03323949,  0.95734415,  0.39775191],
       [ 0.07093748,  0.01007775,  0.03330135],
       [ 0.80786963,  0.13641129,  0.14655269],
       ...,
       [ 0.96223632,  0.43916482,  0.05542078],
       [ 0.06631163,  0.0015063 ,  0.46550416],
       [ 0.88154752,  0.24332142,  0.66746564]])