tatami_test
Utilities for testing tatami libraries
Loading...
Searching...
No Matches
create_indexed_subset.hpp
Go to the documentation of this file.
1#ifndef TATAMI_TEST_CREATE_INDEXED_SUBSET_HPP
2#define TATAMI_TEST_CREATE_INDEXED_SUBSET_HPP
3
4#include <vector>
5#include <random>
6#include <cstdint>
7
8#include "tatami/tatami.hpp"
9
15namespace tatami_test {
16
34template<typename Index_>
35tatami::VectorPtr<Index_> create_indexed_subset(Index_ extent, double relative_start, double probability, uint64_t seed) {
36 auto ptr = new std::vector<Index_>;
37 tatami::VectorPtr<Index_> output(ptr);
38
39 Index_ start = extent * relative_start;
40 if (start < extent) {
41 auto& indices = *ptr;
42 indices.push_back(start);
43 std::mt19937_64 rng(seed);
44 std::uniform_real_distribution udist;
45 for (Index_ i = start + 1; i < extent; ++i) {
46 if (udist(rng) < probability) {
47 indices.push_back(i);
48 }
49 }
50 }
51
52 return output;
53}
54
55}
56
57#endif
Utilities for testing tatami libraries.
Definition create_indexed_subset.hpp:15
tatami::VectorPtr< Index_ > create_indexed_subset(Index_ extent, double relative_start, double probability, uint64_t seed)
Definition create_indexed_subset.hpp:35
std::shared_ptr< const std::vector< Index_ > > VectorPtr