• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#生成指定范围内的不重复随机数

C#生成指定范围内的不重复随机数

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#随机数范围,c#随机数生成,c#随机数不重复,c#产生随机数,c#取随机数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C#生成指定范围内的不重复随机数

// Number随机数个数
// minNum随机数下限
// maxNum随机数上限
public int[] GetRandomArray(int Number,int minNum,int maxNum)
 {
  int j;
  int[] b=new int[Number];
  Random r=new Random();
  for(j=0;j<Number;j++)
  {
  int i=r.Next(minNum,maxNum+1);
  int num=0;
  for(int k=0;k<j;k++)
  {
   if(b[k]==i)
   {
   num=num+1;
   }
  }
  if(num==0 )
  {
   b[j]=i;
  }
  else
  {
   j=j-1;
  }
  }
  return b;
 }

</div>

下面来介绍下其他网友的实现方法:

方法1:思想是用一个数组来保存索引号,先随机生成一个数组位置,然后把随机抽取到的位置的索引号取出来,并把最后一个索引号复制到当前的数组位置,然后使随机数的上限减一,具体如:先把这100个数放在一个数组内,每次随机取一个位置(第一次是1-100,第二次是1-99,...),将该位置的数用最后的数代替。

int[] index = new int[15]; 
for (int i = 0; i < 15; i++) 
index = i; 
Random r = new Random(); 
//用来保存随机生成的不重复的10个数 
int[] result = new int[10]; 
int site = 15;//设置上限 
int id; 
for (int j = 0; j < 10; j++) 
{ 
id = r.Next(1, site - 1); 
//在随机位置取出一个数,保存到结果数组 
result[j] = index[id]; 
//最后一个数复制到当前位置 
index[id] = index[site - 1]; 
//位置的上限减少一 
site--; 
}
</div>

方法2:利用Hashtable。

Hashtable hashtable = new Hashtable(); 
Random rm = new Random(); 
int RmNum = 10; 
for (int i = 0; hashtable.Count < RmNum; i++) 
{ 
  int nValue = rm.Next(100); 
if (!hashtable.ContainsValue(nValue) && nValue != 0) 
{ 
  hashtable.Add(nValue, nValue); 
  Console.WriteLine(nValue.ToString()); 
} 
}
</div>

方法3:递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。

Random ra=new Random(unchecked((int)DateTime.Now.Ticks)); 
int[] arrNum=new int[10]; 
int tmp=0; 
int minValue=1; 
int maxValue=10; 
for (int i=0;i<10;i++) 
{ 
tmp=ra.Next(minValue,maxValue); //随机取数 
arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中 
} 
......... 
......... 
public int getNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra) 
{ 
int n=0; 
while (n<=arrNum.Length-1) 
{ 
if (arrNum[n]==tmp) //利用循环判断是否有重复 
{ 
tmp=ra.Next(minValue,maxValue); //重新随机获取。 
getNum(arrNum,tmp,minValue,maxValue,ra);//递归:如果取出来的数字和已取得的数字有重复就重新随机获取。 
} 
n++; 
} 
return tmp; 
}
</div>

以上所述就是本文的全部内容了,希望大家能够喜欢。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#生成指定范围内的不重复随机数

相关文章

  • 2017-05-28操作xml,将xml数据显示到treeview的C#代码
  • 2017-05-28C#实现简单的汽车租赁系统
  • 2017-05-28C#中私有构造函数的特点和用途实例解析
  • 2017-05-28C# linq查询之动态OrderBy用法实例
  • 2017-05-28C#生成DLL文件的方法小结
  • 2017-05-28C#实现读取注册表监控当前操作系统已安装软件变化的方法
  • 2017-05-28C#操作PowerPoint的方法
  • 2017-05-28C#判等对象是否相等的方法汇总
  • 2017-05-28c# 以二进制读取文本文件
  • 2017-05-28C#中string.format用法详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 轻松学习C#的String类
    • WinForm限制窗体不能移到屏幕外的方法
    • C#模拟http 发送post或get请求的简单实例
    • C#实现人民币大写转换示例代码
    • C#.net编程创建Access文件和Excel文件的方法详解
    • C#与SQL连接:GridView控件对数据库的操作
    • 解决C# winForm自定义鼠标样式的两种实现方法详解
    • 解决C# X64应用程序中读取WParam溢出的问题
    • c# xml API操作的小例子
    • .net实现裁剪网站上传图片的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有