Как мне правильно перевести этот код Rust на C#?C#

Место общения программистов C#
Ответить
Anonymous
 Как мне правильно перевести этот код Rust на C#?

Сообщение Anonymous »

Код: Выделить всё

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
*/
}
Как перевести этот исходный код на C#?

Код: Выделить всё

[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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»