blob: 15cc0490ed04159f0ca078aec3f052f767d34e0e [file] [log] [blame]
#ifndef THC_TENSOR_RANDOM_CUH
#define THC_TENSOR_RANDOM_CUH
#include "THCNumerics.cuh"
template <typename T>
__device__ int binarySearchForMultinomial(T* dist,
int size,
T val) {
int start = 0;
int end = size;
while (end - start > 0) {
int mid = start + (end - start) / 2;
T midVal = dist[mid];
if (THCNumerics<T>::lt(midVal, val)) {
start = mid + 1;
} else {
end = mid;
}
}
if (start == size) {
// No probability mass or precision problems; just return the
// first element
start = 0;
}
return start;
}
#endif // THC_TENSOR_RANDOM_CUH