File: site_gen.cpp

package info (click to toggle)
iqtree 2.0.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 14,620 kB
  • sloc: cpp: 142,571; ansic: 57,789; sh: 275; python: 242; makefile: 95
file content (34 lines) | stat: -rw-r--r-- 950 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <random>
#include <string>

int main(int argc, char** argv) {
	if (argc != 4) {
		std::cerr << "Usage: " << argv[0]
		          << " <number-of-species> <number-of_sites> <probabilty-of-1>\n";
		return 1;
	}
	const auto num_species = std::stoul(argv[1]);
	const auto num_sites = std::stoul(argv[2]);
	const auto prob = std::stod(argv[3]);

	auto gen = std::default_random_engine{std::random_device{}()};
	auto dist_p = std::uniform_real_distribution<double>{0.0, 1.0};

	const auto root_species =
	        std::uniform_int_distribution<unsigned long>{0u, num_species}(gen);

	std::cout << num_species << ' ' << num_sites << '\n';
	for (auto i = 0ul; i < num_species; ++i) {
		if (i == root_species) {
			for (auto j = 0ul; j < num_sites; ++j) {
				std::cout << "1 ";
			}
		} else {
			for (auto j = 0ul; j < num_sites; ++j) {
				std::cout << (dist_p(gen) < prob) << ' ';
			}
		}
		std::cout << 's' << i << '\n';
	}
}