---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------

生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。(要求使用两种方法)

解答:Random类是一个伪随机数算法,原理:

r(n)=(sed+r(n-1))%100;

class MyRand{private int seed;private int prevNumber = 10;public MyRand(int seed){this.seed = seed;}public int Next(){int newRand = (seed + prevNumber) % 100;prevNumber = newRand;return newRand;}}

生成的随机数是依赖于上一个的,所以叫“随机数序列”。,确定的种子产生确定的随机数序列。

为了避免每次生成的随机数序列都一样,所以一般采用当前系统运行的毫秒数

Environment.TickCount做种子。

这就明白为什么

//for(int i = 0; i < 10; i++)

//{

//    Random rand = new Random();

//    Console.WriteLine(rand.Next(100));

//}

是错的。

经过反编译,Random类的无参构造函数最终也是调用有参的,传递的就是当前毫秒数

public Random() : this(Environment.TickCount)

这就验证了

//for(int i = 0; i < 10; i++)

//{

//    Random rand = new Random();

//    Console.WriteLine(rand.Next(100));

//}

为什么一样,或者一半一样,是因为在同一毫秒内。

做法1:

 List<int> list = new List<int>();Random rand = new Random();while (list.Count < 100){int number = rand.Next(1, 101);//>=1,<101if (!list.Contains(number))//如果list中已经含有这个数,则不插入{list.Add(number);}}foreach (int i in list){Console.WriteLine(i);}

做法2:

先把1-100这100个数按顺序放入数组arr,再重复100次下面的操作,生成两个介于 >=0,<100 之间的随机数m、n,颠倒arr[m]和arr[n]的数。

            int[] arr = new int[100];//把100个数顺序放入for (int i = 0; i < 100; i++){arr[i] = i + 1;}Random rand = new Random();for (int i = 0; i < 100; i++){//随机生成两个位置int m = rand.Next(0, 100);int n = rand.Next(0, 100);//颠倒两个位置int temp = arr[m];arr[m] = arr[n];arr[n] = temp;}

效率比第一种高的多,这个只需要N次,而上一种至少需要N*N次

---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com

黑马程序员-传智播客资料中的面试题相关推荐

  1. 想进入黑马程序员——传智播客学习

    前些天突然有感自己即将毕业了,小小的感触了一番.反思反思自己这几年大学的所作所为,确实学到的东西太少了,本来是学计算机网络方面的,现在都偏离了本行,搞起了软件方面,可是软件方面的基础也不扎实,面临的各 ...

  2. JavaWeb程序设计任务教程(黑马程序员 传智播客)测一测 编写一个Servlet,实现统计网站被访问次数的功能

    详细解释已在注释中给出 package 统计网站被访问次数;import java.io.*;import javax.servlet.*; import javax.servlet.http.*;p ...

  3. 长沙理工计算机竞赛黑马,2018年传智播客首届“黑马杯”高校编程大赛圆满落幕...

    原标题:2018年传智播客首届"黑马杯"高校编程大赛圆满落幕 传智播客首届"黑马杯"高校编程大赛于2018年9月10日正式举办.本次大赛是面向高校大学生开放的I ...

  4. 传智播客 .NET面试宝典(2015版)

    .Net工程师面试笔试宝典 培训班常见问题 1.你们会带着我们做完整个完整的项目吗? 答:小的项目会,大的项目则不可能, 1.众所周知,随便拿出一个中等大小的项目,也需要好多个熟练的开发人员开发好多个 ...

  5. 传智播客 .NET面试宝典(2014版)

    .Net工程师面试笔试宝典 由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完和学完这套面试宝典,即使你已经学过了有关的技术,那么至少也需要一个月的时间才能消化和掌握这套面试宝典,所以 ...

  6. 传智播客 - java 就业面试题大全

      从享受生活的角度上来说:"程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做:第二,你非常痴迷 ...

  7. 传智播客JDBC视频教程

    视频介绍: 一些视频教程通过浅显案例来让初学者感到轻松,但是课程中编写的代码不能直接应用于项目中:而本套视频教程正好相反,视频讲解者李勇老师以技术见长,性格朴实无华.不善于幽默搞笑,李勇老师编写的代码 ...

  8. 感谢传智播客+C#.Net学习之旅

    <C#.Net基础学习视频2014版>在本月中旬左右终于学习完了,终于学完了.                 自2015年暑期7月份开始学习C#.Net基础学习视频以来,直到本月才学习完 ...

  9. 【传智播客】Javaweb程序设计任务教程 黑马程序员 课后答案【合集】

    [传智播客]Javaweb程序设计任务教程 黑马程序员 第一章 课后答案 [传智播客]Javaweb程序设计任务教程 黑马程序员 第二章 课后答案 [传智播客]Javaweb程序设计任务教程 黑马程序 ...

最新文章

  1. Selenium Webdriver原理终于搞清楚了
  2. ios逆向小试牛刀之操作手记
  3. div设置宽度,实现不等比缩放,或设置最小宽度 min-width
  4. JavaScript | 声明数组并使用数组索引分配元素的代码
  5. CRM 4.0得到用户个人信息
  6. HIT Software Construction Review Notes(1-1 Multi-Dimensional Views of Software Construction)
  7. java buffer类_Java ByteBuffer类
  8. 悲催的一下午:怎么删除360。。。
  9. AUDI A6 C5 627 Timer Delay Relay(延时继电器)
  10. 当前版本与卡刷包android_Android p系统下载-MIUI 10 Android p线刷包卡刷包最新版 - 极光下载站...
  11. Android人脸支付功能,OPPO Find X成为首款支持微信人脸支付的安卓手机
  12. RTD\RTK\PPK\PPP\DGPS\地基增强系统\星基增强系统
  13. spark sql 字符串转时间戳
  14. python 学习笔记2
  15. 纯0基础Java自学
  16. 矩阵的定义——MATLAB
  17. spring原理 struts2原理 hibernate原理 MyBatis原理 SpringMVC
  18. On-premises software 释义http://en.wikipedia.org/wiki/On-premises_software
  19. 黑客入门——手机wifi定位原理
  20. MySQL的not null default

热门文章

  1. pytorch报错:ValueError: num_samples should be a positive integer value, but got num_samples=0
  2. Microsoft Patterns Practices
  3. SWAT模型(建模方法、实例应用、高级进阶)技能提升
  4. 用IE浏览AutoCad文件的插件
  5. 泛微移动表单校验手机号跟邮箱
  6. VC2008学习笔记(二)——插入WMP控件并创建类
  7. 如何把一个苹果卖到100万?
  8. 服装行业绣印花外发加工的跟踪方法
  9. 北理计算机在线,祝烈煌_北京理工大学计算机学院
  10. 基于MATLAB的苹果外观特征检测