生成带有随机数的列表.排序和合计
本文关键字:排序 列表 随机数 | 更新日期: 2023-09-27 18:24:17
我是编程新手,如果有人能帮我解决以下问题,我会很高兴。我对两种方法有意见。首先对列表中的所有50个随机数求和,然后用50个随机数来对列表进行排序。例如,当列表有四个数字{1,2,3,8},但没有50个随机数时,我知道如何做到这一点。
对这两个方法使用构造函数会很好,但我现在不知道如何做到这一点。
任何帮助都将不胜感激。
class Class1
{
var rand = new Random();
public Class1( ) // how to use a constructor ?
public static List<double> TotalSum()
{
var alist = new List<double>();
for (int i = 0; i < 50; i++)
{
alist.Add(rand.Next(10));
}
Console.WriteLine("Total sum:", alist);
}
public static List<double> Sort()
{
var slist = new List<double>();
for (int i = 0; i < 50; i++)
{
slist.Sort(rand.Next(10)); // rand.Next does not work with Sort
Console.WriteLine(slist);
}
}
class Program
{
static void Main(string[] args)
{
Class1 show = new Class1();
show.TotalSum();
show.Sort();
}
}
}
只需使用的两种方法
list.Sum();
list.Sort();
我建议你用兰特。接下来(Environment.TickCount)以获得更好的随机数,但最后您需要使用不同的基元值来存储结果
class Program
{
static void Main(string[] args)
{
var array = Class1.Sort();
PrintArray(array);
Console.WriteLine();
Console.WriteLine("Total sum: {0}", Class1.TotalSum());
Console.ReadLine();
}
static void PrintArray(List<double> array)
{
foreach (var a in array)
Console.WriteLine(a);
}
}
public class Class1
{
public static double TotalSum()
{
var rand = new Random();
var alist = new List<double>();
for (int i = 0; i < 50; i++)
{
alist.Add(rand.Next(10));
}
return alist.Sum();
}
public static List<double> Sort()
{
var rand = new Random();
var slist = new List<double>();
for (int i = 0; i < 50; i++)
{
slist.Add(rand.Next(10)); // rand.Next does not work with Sort
}
slist.Sort();
return slist;
}
}
我想我明白你的意思了。你想要一个包含随机数字列表的类,你需要一些函数。
最好给你的班级起一个更合适的名字。例如"RandomList"会很好。
不能使用Console.WriteLine(list)
打印列表中的项目。您必须迭代项目并以您想要的方式打印它们。
不能使用var
定义字段。您必须显式地编写类型。
换句话说,static
关键字是one for all instances
。所以,如果你不使用静态,它将是one per instance
。实例只是您使用构造函数创建的对象。最好将随机数生成器声明为静态,但其他方法和列表字段应保持非静态。
使用LinqSum()
,您可以从列表中获得所有项目的总和。若您不想使用Linq,那个么您必须遍历列表,并将每个项添加到值sum
中。
我对代码进行了注释以解释问题。
class Program
{
static void Main(string[] args)
{
RandomList show = new RandomList(50, 10);
show.TotalSum();
show.Sort();
}
}
class RandomList
{
private static Random rand = new Random();
private List<double> _list; // this field holds your list
public RandomList(int length , int maxValuePerItem) // this is the constructor
{
_list = new List<double>();
// populate list
for (int i = 0; i < length; i++)
{
_list.Add(rand.Next(maxValuePerItem));
}
}
public void TotalSum()
{
Console.WriteLine("Total sum: {0}", _list.Sum()); // {0} is required to specify the place to put _list.Sum() inside string.
// without linq way
// int sum = 0;
// foreach(var i in _list) sum += i;
}
public void Sort()
{
_list.Sort();
foreach (var d in _list)
{
Console.Write(d + " , "); // you need to print this in the way you want.
}
}
}
注意,这些方法不应该是静态的,因为它们作用于类的属性。我们还使用了List
(Sum()
和Sort()
)的内置方法,而不是滚动我们自己的方法。
class Class1
{
var rand = new Random();
var alist;
public Class1() // constructor creates a new list and initializes it
{
alist = new List<double>();
for (int i = 0; i < 50; i++)
{
alist.Add(rand.Next(10));
}
}
public List<double> TotalSum()
{
Console.WriteLine("Total sum:", alist.Sum());
}
public List<double> Sort()
{
alist.Sort();
for (double num in alist)
{
Console.WriteLine(num.ToString());
}
}
class Program
{
static void Main(string[] args)
{
Class1 show = new Class1();
show.TotalSum();
show.Sort();
}
}
}
因为你问如何使用构造函数,我试图用构造函数做一些有用的事情的方式重写你的代码。我添加了一个属性和一个局部变量以及另一个函数。
public class Class1
{
Random rand = new Random();
List<double> alist { get; set; }
public Class1(int howmany = 50)
{
alist = new List<double>();
for (var i = 0; i < howmany; i++)
{
alist.Add(rand.NextDouble());
}
}
public void Sort()
{
alist.Sort();
}
public void printTotalSum()
{
Console.WriteLine("Total sum: {0}", alist.Sum());
}
public void printList() {
Console.WriteLine("The list contains:");
for (int i = 0; i < alist.Count; i++)
{
Console.WriteLine(alist[i]);
}
}
}
class Program
{
static void Main(string[] args)
{
Class1 show = new Class1(10);
show.printTotalSum();
show.Sort();
show.printList();
}
}