using System;
using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
namespace UnityEngine.Perception.Randomization.Samplers
{
///
/// Generates random values from probability distributions
///
public interface ISampler
{
///
/// Resets a sampler's state to its base random seed
///
void ResetState();
///
/// Resets a sampler's state to its base random seed and then offsets said seed using an index value
///
///
/// Often a the active scenario's currentIteration
///
void ResetState(int index);
///
/// Deterministically offsets a sampler's state when generating values within a batched job
///
///
/// The current job index
///
void IterateState(int batchIndex);
///
/// Generate one sample
///
float Sample();
///
/// Schedule a job to generate multiple samples
///
NativeArray Samples(int sampleCount, out JobHandle jobHandle);
}
}