为了尽快完成面试,第一反应就是想到先创建数组,然后随机产生1-100的数字,再与数组进行比较,数组中没有此数字时进行比较,虽然这种方法不好,但能够实现功能。示例代码如下:
static void Main(string[] args)
{
int[] num = new int[100];
List<int> temp = new List<int>();
Random rand = new Random();
int number = 0;
for (int index = 0; index < num.Length; index++)
{
do
{
//随机产生1-100的数字
number = rand.Next(1, 100);
}while(temp.IndexOf(number) != -1);
num[index] = number;
temp.Add(number);
}
//显示数据
foreach (int item in num)
{
Console.Write(string.Format("{0}\t", item));
}
Console.Read();
}
回家后,上机编写代码进行测试,发现上面这个方法不仅不好,而且效率非常低,根本显示不出数据。
经过思考:1-100之间的数,产生一个长度为100的数组,不就是将这一百个数填充的数组中吗,只是填充的位置可以随机是产生而已。为此写下如下实现程序:
static void Main(string[] args)
{
int[] num = new int[100];
Random rand = new Random();
int number = 1;
for (int index = 0; index <= 99; index++)
{
num[index] = number++;
//随机产生数组下标
int randIndex = rand.Next(0, index);
//进行数据替换
int temp = num[randIndex];
num[randIndex] = num[index];
num[index] = temp;
}
foreach (var item in num)
{
Console.Write(string.Format("{0}\t",item));
}
Console.Read();
}
这样实现好像不太符合考题要求,只随机打乱已经填充的数据。经过再次思考,还可采用先准备一个1-100的数据集合,使用随机方式获取集合中的数字到数组中,获取过的数字进行移除后,再进行随机获取。
实现程序如下:
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>();
for (int number = 1; number <= 100; number++)
{
list.Add(number);
}
//随机获取列数中的一个数字,获取完后,移除此数字
int[] num = new int[100];
Random rand = new Random();
int listIndex = 0;
for (int index = 0; index <= 99; index++)
{
listIndex = rand.Next(0, list.Count);
num[index] = list[listIndex];
list.Remove(num[index]);
}
//显示数据
foreach (int item in num)
{
Console.Write(string.Format("{0}\t", item));
}
Console.Read();
}
}
这样实现效率比较高,也符合题目要求,随机组成组成。
不知这个题目是谁先想到考我们的,这样实现是否达到老师的要求,是否还有更好的实现方法?欢迎赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:896374871@qq.com QQ:896374871 联系我,非常感谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示