Код: Выделить всё
fn create_planar_dihedral_test() {
let mut rnd_gen = SmallRng::seed_from_u64(42);
let n_atoms = 3;
// ---------- Initialize coordinates
let r1 = vec![3.8; n_atoms];
let mut planar1: Vec = (0..n_atoms).map(|_| rnd_gen.gen_range(120.0_f64.to_radians()..170.0_f64.to_radians())).collect();
let mut dihedral1: Vec = (0..n_atoms).map(|_| rnd_gen.gen_range(-180.0_f64.to_radians()..190.0_f64.to_radians())).collect();
for i in 0..n_atoms {
planar1[i] = rnd_gen.gen_range(120.0f64..170.0f64).to_radians();
dihedral1[i] = rnd_gen.gen_range(-180.0f64..190.0f64).to_radians();
println!("{}\t{}", planar1[i], dihedral1[i])
}
/*
2.3722498720571537 -0.17558345684895013
2.1070416315567964 -1.6467721516778209
2.305695583609884 -2.523279922340191
*/
let seed = 42;
let mut rng = StdRng::seed_from_u64(seed);
let n_atoms = 3;
let mut r = vec![3.8; n_atoms];
let mut planar = vec![0.0; n_atoms];
let mut dihedral = vec![0.0; n_atoms];
for i in 0..n_atoms {
planar[i] = rng.gen_range(120.0f64..170.0f64).to_radians();
dihedral[i] = rng.gen_range(-180.0f64..190.0f64).to_radians();
println!("{}\t{}", planar[i], dihedral[i])
}
/*
2.553903126786637 0.3631738295734695
2.6498156800978507 -0.520393468908206
2.124364864779546 -0.46191826232809685
*/
}
Код: Выделить всё
[TestMethod]
public void CreatePlanarDihedralTest()
{
Random rndGen = new Random(42);
int nAtoms = 3;
// Initialize coordinates
List r1 = new List(new double[nAtoms]);
List planar1 = new List();
List dihedral1 = new List();
for (int i = 0; i < nAtoms; i++)
{
r1[i] = 3.8;
planar1.Add(DegreeToRadian(rndGen.NextDouble() * (170.0 - 120.0) + 120.0));
dihedral1.Add(DegreeToRadian(rndGen.NextDouble() * (190.0 + 180.0) - 180.0));
Console.WriteLine("{0}\t{1}", planar1[i], dihedral1[i]);
}
/*
* 2.67742798159418 -2.23165302380809
2.20393047351461 0.234271742934826
2.24138169163355 -1.4458431467022
*/
Console.WriteLine();
Random rng = new Random(42);
List r = new List(new double[nAtoms]);
List planar = new List();
List dihedral = new List();
for (int i = 0; i < nAtoms; i++)
{
r[i] = 3.8;
planar.Add(DegreeToRadian(rng.NextDouble() * (170.0 - 120.0) + 120.0));
dihedral.Add(DegreeToRadian(rng.NextDouble() * (190.0 + 180.0) - 180.0));
Console.WriteLine("{0}\t{1}", planar[i], dihedral[i]);
}
/*
2.67742798159418 -2.23165302380809
2.20393047351461 0.234271742934826
2.24138169163355 -1.4458431467022
*/
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ode-into-c