C#生成互不相同随机数的实现方法

本文实例讲述了C#生成互不相同随机数的实现方法,在进行C#应用程序设计时非常具有实用价值。本文详细讲述了其功能的实现过程。分享给大家供大家参考之用。具体方法如下:

一般来说,用C#生成足够随机的互不相同的随机数 Dotnet.Frameword中提供了一个专门产生随机数的类System.Random,计算机并不能产生完全随机的数字,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选取的,所选的数字并不具有完全的随机性,但就实用而言,其随机程度已经足够了。

在使用随机数时,要先初始化一个随机数发生器.有两种方法;

第一种方法不指定随机种子,系统自动选取当前时前作随机种子:

Random ra=new Random();

第二种方法是指定一个int型的参数作为随机种子:

Random ra=new Random(int iseed);

初始化完成后,用Random.Next()方法产生随机数。

ra.Next(); 它返回一个大于或等于零而小于2,147,483,647的数.

下面我们介绍它的重载函数和其它一些方法。

public virtual int Next(int);

用法:ra.next(20) 返回一个小于所指定最大值(此处为20)的正随机数。

public virtual int Next(int minValue, int maxValue);

用法:ra.next(1,20) 返回一个指定范围内(此处为1-20之间)的随机数.

类System.Random还有几个方法分别是:


公共方法:

NextBytes用随机数填充指定字节数组的元素。

NextDouble返回一个介于 0.0 和 1.0 之间的随机数。


受保护的方法:

Sample返回一个介于 0.0 和 1.0 之间的随机数,只允许子类对象访问。

要在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数。

可以参考下面两个函数: differSamenessRandomNum与getRandomNum:

public int[] differSamenessRandomNum(int num,int minValue,int maxValue) //在区间[minValue,maxValue]取出num个互不相同的随机数,返回数组。
{
Random ra=new Random(unchecked((int)DateTime.Now.Ticks));//保证产生的数字的随机性
int[] arrNum=new int[num];
int tmp=0;
for (int i=0;i>=num-1;i++) {
tmp=ra.Next(minValue,maxValue); //随机取数
arrNum[i]=get RandomNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中
}
return arrNum;
}

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

public int getRandomNum(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); //重新随机获取。
getRandomNum(arrNum,tmp,minValue,maxValue,ra); //递归:如果取出来的数字和已取得的数字有重复就重新随机获取。
}
n++;
}
return tmp;
}

相信本文所述对大家的C#程序设计有一定的借鉴价值。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#生成互不相同随机数的实现方法

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23564.html

相关内容

C#深度优先搜索算法

C#实现Base64处理的加密解密,编码解码示例

C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串的方法

C#远程获取图片文件流的方法


C#导出网站功能实例代码讲解

C#模式画刷HatchBrush用法实例

C#根据反射和特性实现ORM映射实例分析

C#自定义函数NetxtString生成随机字符串

时间: 2024-10-12 12:27:39

C#生成互不相同随机数的实现方法的相关文章

STL系列十一 随机三趣题——随机重排,文件中随机取一行,生成N个随机数

本文将介绍三个有趣的随机问题,分别是随机重新排列.从文件中随机取一行数据.生成N个随机数. 一.随机重新排列 将一个序列打乱并对其进行随机的重新排列,关键在于每种序列的被选择概率要一样,不然有失"公平".现在让我们来寻找如何保证每种序列被选择的概率一样大的算法. 首先假设这个数组只有二个元素,设数组a为{1, 2},显然这个数组只有二种可能的排列,要么是{1,2}要么是{2,1}.很容易想到一种方法--只要第二个元素有50%的概率与第一个元素交换即可.用代码表现下: if (rand(

一个php生成16位随机数的代码(两种方法)

一个php生成16位随机数的代码,php生成随机数的二种方法. 方法1<?php$a = mt_rand(10000000,99999999);$b = mt_rand(10000000,99999999);echo $a.$b; 方法2:<?php$a = range(0,9);for($i=0;$i<16;$i++){$b[] = array_rand($a);} // www.yuju100.comvar_dump(join("",$b));//结果string

DotNet生成随机数的一些方法

在项目开发中,一般都会使用到"随机数",但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法. 1.随机布尔值:         /// <summary>         /// 随机布尔值         /// </summary>         /// <param name="random"></param>         /// <ret

生成特定分布随机数的方法

生成随机数是程序设计里常见的需求.一般的编程语言都会自带一个随机数生成函数,用于生成服从均匀分布的随机数.不过有时需要生成服从其它分布的随机数,例如高斯分布或指数分布等.有些编程语言已经有比较完善的实现,例如Python的NumPy.这篇文章介绍如何通过均匀分布随机数生成函数生成符合特定概率分布的随机数,主要介绍Inverse Ttransform和Acceptance-Rejection两种基础算法以及一些相关的衍生方法.下文我们均假设已经拥有一个可以生成0到1之间均匀分布的随机数生成函数,关

shell 生成指定范围随机数与随机字符串 .

shell 生成指定范围随机数与随机字符串 分类:             shell              2014-04-22 22:17     20902人阅读     评论(5)     收藏     举报 shellrandomurandomuuidlinux shell 生成指定范围随机数与随机字符串 1.使用系统的 $RANDOM 变量 [plain] view plaincopyprint? [email protected]:~$ echo $RANDOM 17617 [

已知一个函数rand5()能够生成1-5的随机数,请给出一个函数,该函数能够生成1-7的随机数。

这是朋友去笔试的一道题,有点考智商,当时我还很自信的说 random5+random5/2  不就可以了 他说不行,然后我就在网上搜了一下 有一道类似的题目 题目: 已知一个函数rand7()能够生成1-7的随机数,请给出一个函数,该函数能够生成1-10的随机数. 思路: 假如已知一个函数能够生成1-49的随机数,那么如何以此生成1-10的随机数呢? 解法: 该解法基于一种叫做拒绝采样的方法.主要思想是只要产生一个目标范围内的随机数,则直接返回.如果产生的随机数不在目标范围内,则丢弃该值,重新取

Python下探究随机数的产生方法

资源下载 #本文PDF版下载 Python下探究随机数的产生方法(或者单击我博客园右上角的github小标,找到lab102的W7目录下即可) #本文代码下载 几种随机数算法集合(和下文出现过的相同) 前言 我们对于随机数肯定不会陌生,随机数早已成为了我们经常要用到的一个方法,比如用于密码加密,数据生成,蒙特卡洛算法等等都需要随机数的参与.那么我们的电脑是怎么才能够产生随机数的呢?是电脑自己的物理存在还是依靠算法?它到底是如何工作的呢?所以我也对这些问题有着好奇心,所以找到了许多资料学习了一下,

shell实例浅谈之三产生随机数七种方法

一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是"伪随机数",不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产生算法将可以产生一个非常长的不重复的序列. 二.随机数 1.生成随机数的七种方法 (1)通过内部系统变量($RANDOM) echo $RANDOM 生成0-32767之间的整数随机数,若超过5位可以加个固定10位整数,然后进行求余. 生成400000~500000的随机数: #!/bin

C# Random 生成不重复随机数

Random 类 命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了. 伪随机数的生成是从种子值开始.如果反复使用同一个种子,就会生成相同的数字系列.产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列.默认情况下,Random 类的无参数构造函数