Skip to main content

Batch sampling from a Distribution

Name

UxHwDoubleSampleBatch, UxHwFloatSampleBatch — Store a batch of samples from a distribution to a destination array.

Synopsis

#include <stddef.h>
#include <uxhw.h>

void UxHwDoubleSampleBatch(double value, double * destSampleArray, size_t numberOfRandomSamples);
void UxHwFloatSampleBatch(float value, float * destSampleArray, size_t numberOfRandomSamples);

Description

The UxHwDoubleSampleBatch() function, on architectures that associate distributional information with floating-point values, draws numberOfRandomSamples random samples from the distribution associated with value and stores them in the destination array destSampleArray.

Parameters

  • value — The distributional value to draw samples from.
  • destSampleArray — The destination array where the samples will be stored.
  • numberOfRandomSamples — The number of samples to be drawn and stored.

Return values

The UxHwDoubleSampleBatch() function does not return a value.

If value is NaN with no associated distribution, the function writes no samples to destSampleArray. If the distribution associated with value carries NaN mass, the stored samples include NaN in proportion to that mass. See Handling of NaN.

✏️   Examples

#include <stddef.h>
#include <stdio.h>
#include <uxhw.h>

enum
{
N = 10,
};

int
main(void)
{
size_t i;
double a;
double samples[N] = {0};

a = UxHwDoubleUniformDist(10.0, 20.0);

UxHwDoubleSampleBatch(a, samples, N);

for (i = 0; i < 10; i++)
{
printf("Sample %d of %lf is %lf.\n", i, a, samples[i]);
}

return 0;
}