gpt4 book ai didi

c# - 优化数组中每个元素的平方或乘法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:11:29 25 4
gpt4 key购买 nike

我有两个问题想请教。

  1. 第一个是有一个 hf = {1, 4, 9, ......., n-1, n} 的数组。我想对数组中的每个元素进行平方,例如 {1^2、4^2、9^2、.........、(n-1)^2、n^2}。

  2. 有两个数组。一个是 hf = {1, 4, 9, ........., n-1, n} 另一个是 random = {2, 3, 4, ........., k- 1,k}。我想将两个数组中的每个组件相乘。 {1*2, 4*3, 9*4, ......., (n-1)(k-1), nk}。

我实际使用的代码如下:

    int np = 20000;
for (int i = 0; i < np; i++)
{
random[i] = randomNG.GetNormal();

for (int j = 0; j < np; j++)
{
sigma[j] = Math.Pow(hf[j], 2);
hf[j] = hf[j] * random[i];
sigma_super[j] = sigma_super[j] + sigma[j];
hf_super[j] = hf_super[j] + hf[j];
}
}

为了完成上述案例,我使用了“for”语句。问题是需要花费大量时间来处理,因为另一个 for 语句中有 for 语句(20000x20000 次迭代)。

当我测量耗时时,大约是 14 秒。有没有其他方法可以在更短的时间内做同样的事情(也许使用开源库中的矩阵类)?我真的很想优化这个过程。

最佳答案

两个 20,000 个元素的数组(总共 40,000 个元素)并没有那么多。您是如何实现您的代码以使其“需要大量时间来处理”的?

这处理得相当快:

using System;
using System.Linq;

public class Program
{
public static void Main()
{
int[] array1 = new int[20000];
int[] array2 = new int[20000];
int[] square = new int[20000];
int[] product = new int[20000];

Random r = new Random();
for (int i = 0; i < array1.Length; i++)
{
array1[i] = r.Next(1, 10);
array2[i] = r.Next(1, 10);

square[i] = array1[i] * array1[i];
product[i] = array1[i] * array2[i];
}

// Only displaying the first 20 results
Console.WriteLine("Array1 : {0}", String.Join(",", array1.Take(20)));
Console.WriteLine("Array2 : {0}", String.Join(",", array2.Take(20)));
Console.WriteLine("Square : {0}", String.Join(",", square.Take(20)));
Console.WriteLine("Product: {0}", String.Join(",", product.Take(20)));
}
}

结果(每次执行都会有所不同):

Array1 : 4,3,4,7,3,3,5,6,3,3,9,7,5,4,4,2,8,7,4,7
Array2 : 4,7,6,7,4,6,4,8,8,3,7,2,2,7,3,2,4,2,8,3
Square : 16,9,16,49,9,9,25,36,9,9,81,49,25,16,16,4,64,49,16,49
Product: 16,21,24,49,12,18,20,48,24,9,63,14,10,28,12,4,32,14,32,21

请参阅此处的工作示例... https://dotnetfiddle.net/83I3B0

关于c# - 优化数组中每个元素的平方或乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30993623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com