Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
53
Task/Permutation-test/Rust/permutation-test.rust
Normal file
53
Task/Permutation-test/Rust/permutation-test.rust
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
fn main() {
|
||||
let treatment = vec![85, 88, 75, 66, 25, 29, 83, 39, 97];
|
||||
let control = vec![68, 41, 10, 49, 16, 65, 32, 92, 28, 98];
|
||||
|
||||
let mut data_set = control.clone();
|
||||
data_set.extend_from_slice(&treatment);
|
||||
|
||||
let greater = combinations(treatment.iter().sum(), treatment.len() as i64, &data_set) as f64;
|
||||
let lesser = combinations(control.iter().sum(), control.len() as i64, &data_set) as f64;
|
||||
let total = binomial(data_set.len() as i64, treatment.len() as i64) as f64;
|
||||
|
||||
println!("<= : {}%", (lesser / total * 100.0));
|
||||
println!(" > : {}%", (greater / total * 100.0));
|
||||
}
|
||||
|
||||
fn factorial(x: i64) -> i64 {
|
||||
let mut product = 1;
|
||||
for a in 1..(x + 1) {
|
||||
product *= a;
|
||||
}
|
||||
product
|
||||
}
|
||||
|
||||
fn binomial(n: i64, k: i64) -> i64 {
|
||||
let numerator = factorial(n);
|
||||
let denominator = factorial(k) * factorial(n - k);
|
||||
numerator / denominator
|
||||
}
|
||||
|
||||
fn combinations(total: i64, number: i64, data: &[i64]) -> i64 {
|
||||
if total < 0 {
|
||||
return binomial(data.len() as i64, number);
|
||||
}
|
||||
|
||||
if number == 0 {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if number > data.len() as i64 {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if number == data.len() as i64 {
|
||||
if total < data.iter().sum() {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
let tail = &data[1..];
|
||||
combinations(total - data[0], number - 1, &tail) + combinations(total, number, &tail)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue