C#中能得到随机数的函数是什么啊,怎么才能将随机输出的随机数赋给一个变量?

作者&投稿:蔽凭 (若有异议请与网页底部的电邮联系)
在c#中,怎么产生一个随机数?~

.net.Frameword中提供了一个专门产生随机数的类System.Random,此类默认情况下已被导入,编程过程中可以直接使用。我们知道,计算机并不能产生完全随机的数字,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选取的,所选的数字并不具有完全的随机性,但就实用而言,其随机程度已经足够了。
可以用以下两种方法初始化一个随机数发生器;
函数是这样用,比如100至999的随机数
Random ran=new Random();
int RandKey=ran.Next(100,999);

不过这样会有重复,可以给Random一个系统时间做为参数,以此产生随机数,就不会重复了
第一种方法不指定随机种子,系统自动选取当前时前作随机种子:
Random ra=new Random();

第二种方法是指定一个int型的参数作为随机种子:
int iSeed=6;
Random ra=new Random(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个互不相同的整数。
主要是下面两个函数getRandomNum与getNum:

public int[] getRandomNum(int num,int minValue,int maxValue)
{
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]=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中
}
return arrNum;
}

getRandomNum即是在区间[minValue,maxValue]取出num个互不相同的随机数,返回的数组包含着结果。
其中随机数是这样创建的 Random ra=new Random(unchecked((int)DateTime.Now.Ticks));为什么不用Random ra=new Random();(系统自动选取当前时前作随机种子)

用系统时间做随机种子并不保险,如果应用程序在一个较快的计算机上运行,则该计算机的系统时钟可能没有时间在此构造函数的调用之间进行更改,Random 的不同实例的种子值可能相同。这种情况下,我们就需要另外的算法来保证产生的数字的随机性。所以为了保证产生的随机数足够"随机",我们不得不使用复杂一点的方法来获得随机种子。在上面的这段程序中,我们首先使用系统时间作为随机种子,然后将上一次产生的随机数跟循环变量和一个与系统时间有关的整型参数相乘,以之作为随机种子,从而得到了每次都不同的随机种子,保证了产生足够"随机"的随机数。

函数getNum是一递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。值得注意的是要用一同一个随机数实例生成,所以ra要作为参数传入getNum中,否则生成的数字会有重复。

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;
}

最后就是要显示出来,当点击一个button时取出的数字显示在一个label中。

private void button1_Click(object sender, System.EventArgs e)
{
int[] arr=getRandomNum(6,1,20); //从1至20中取出6个互不相同的随机数
int i=0;
string temp="";
while (i<=arr.Length-1){
temp =arr[i].ToString() " ";
i ;
}
label1.Text=temp; //显示在label1中
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 随机数
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Random rad = new Random();//实例化随机数产生器rad;
int value = rad.Next(1000, 10000);//用rad生成大于等于1000,小于等于9999的随机数;
label1.Text = value.ToString(); //用label控件label1显示产生的四位随机数;
}
}
}

【下面的这个介绍比较全面,看完这个你就掌握了】

C#随机函数random()典型用法集锦

Random.Next() 返回非负随机数;

Random.Next(Int) 返回一个小于所指定最大值的非负随机数

Random.Next(Int,Int) 返回一个指定范围内的随机数

1、random(number)函数介绍
见帮助文档,简单再提一下,random(number)返回一个0~number-1之间的随机整数.参数number代表一个整数.
示例:
trace(random(5));

2、Math.random()
见帮助文档。返回一个有14位精度的0~1之间的数,注意没有参数。
示例:
trace(Math.random());

3、自定义的函数
我们有时候需要的随机数可不是这么简单。
比如我们想返回一个有两位小数的随机数,返回两个数之间的随机数,返回字母随机数,返回多个随机数等等,
这些都需要我们自己编写函数来实现。下面的代码直接复制到主场景第一帧就可以调用了。注意有的函数需要入口参数。

#1: 返回一个共有n位数,其中m位是小数的随机数

--------------------------------------------------------------------------------

function randomXiao(n,m){
var a = Math.pow(10, n+m);
var b = random(a);
return b=b/Math.pow(10, m);
}

--------------------------------------------------------------------------------

可以用trace(randomXiao(3,2));实验一下。这个函数简单。Math.pow(n,m)用于返回一个以n为底,m为指数的数。乘方!

# 2: 返回一个n到m之间的随机数

--------------------------------------------------------------------------------

function randomNm(n,m){
if(m>=n){
return random(m-n+1)+n;
}
else {
return false;
}
}

--------------------------------------------------------------------------------

之所以用random(m-n+1)是因为随机数的范围是m-n,加上1使得m也能在里面。加上n保证随机数以n为下限。
加上判断使函数更完整。另外,如果要返回一个负数随机数,也可以用randomNm(n,0);当然,我想更一般的是用-random(n);

# 3: 返回一个字母

--------------------------------------------------------------------------------

function randomAscii(){
var c = String.fromCharCode(random(26)+65);
if(random(2)){
return c.toLowerCase();
}
return c;
}

--------------------------------------------------------------------------------

#4: 返回一个不区分大小写的随机字母

如果要返回大写,把if条件句去掉就行了。如果要返回小写,可以把条件句改为恒成立,或者去掉条件,最后一句改为:
return c.toLowerCase(); String.fromCharCode(number)函数返回number代表数字的ASCII码。
toLowerCase()用于将大写字母转为小写。

# 5: 返回一个n到m之间的k个互异随机数

private void RandomKDiffer(int n, int m, int k, int[] arrayK){
int i = 0;
int a,j;
Random random = new Random();

while (i < k) {
a =random.Next(m-n+1)+n;
for (j = 0; j < i; j++) {
if (a == arrayK[j]) {
break;
}
}
if (j == i) {
arrayK[i] = a;
i++;
}
}
}

数组arrayK中的元素即为所得值。注意到我们借用了random(m-n+1)+n来返回一个n~m的随机数。所以m本身也会被返回。
如果要返回m以内的数,可以把n值改为0。如果要随机返回不确定个数,可以把入口参数的K值赋为k=random(m-n);
随机返回不一定互异的数,把判断去掉就可以了,注意i++不要漏掉。这里不再给出。

#指定若干个字符/数字,然后从中随机返回一个(或多个)字符/数字,可以把原字符赋给一个数组,再根据数组的下标来
决定返回值。这里不再举出函数,大家可以自己尝试。

#另需指出,对于随机设定一个MC的颜色值,我们较多采用mcColor.setRBG(random(0xFFFFFF));下面的例子中会有说明。
如果要指定一个色域,可以采用上面给出的函数。如果对Color对象不太了解的可以查帮助,这里不作讨论。
以上函数算是由random直接衍生的,下面再举个例子,可以说是衍生函数的衍生函数,其中会直接用到上面给出的函数,请注意。

#6: 返回一个指定长度的随机大写英文字符串

function randomString(n){
var arrayA = randomKdiffer(1, 26, n);
var arrayB = "";
for (var i = 0; i < n; i++) {
c=String.fromCharCode(arrayA[i]+64);
/* if(random(2)){
c=c.toLowerCase();
}
*/
arrayB = arrayB+c;
}
return arrayB;
}
注意到StringCharCode方法,如果要写成小写,则把返回值写成arrayB.toLowerCase();如果返回一个不区分大小写的字符串,
则把注释去掉.如果要返回一个不指定长度的字符串,则可以把入口参数赋值为random(n);这样只指定其上限.此函数也可以用
randomAscii函数实现,留给大家自己思考.

#7:在几个区域中选出随机数

比如,在1~20,45~70这两段数之间选取一个随机数。因为区域数未定,所以直接用一个确定的函数编写多有不便,
我们要使用的方法就是用switch语句进行定向,具体的我们给出一个函数,返回一个1~20,45~70内的数,其它区域读者请自行更改。

function randomArea(){
var a=random(2);
switch(a){
case 0:
return randomNm(1,20);break;
case 1:
return randomNm(45,70);break;
}
}
注意,我们并没有写入口参数,而是直接在函数中就确定了是两段数,而且范围也是确定的。如果是三段,则改为a=random(3);
同样增加一个case就可以了。当然,你也可以把第段数的范围设为入口参数,这里就不再举例了。但是这样做可能会使参数增多,
我个人是不太喜欢一个需要很多参数的函数的。类似的,我们也可以随机返回一个字母段或几个字母段或者字母加数字段的一个数。
方法也只是前几个函数的一个结合。这里仅举一例,返回指定的大写字母段的一个随机字母。
提醒一下,小写字母的ASCII码a~z分别对应97~122.

function randomAArea(a,b){
if (ord(a) <= ord(b) && 65<=ord(a) && ord(b) <= 90) {
return String.fromCharCode(randomNm(ord(a), ord(b)));
} else {
return false;
}
}
其中用到一个函数ord(char),这是一个不推荐的函数.用于返回char字符的ASCII码。

如果大家想在任何地方调用函数,则需要稍稍变一下,把我们写的函数改变为全局函数.这样就可以不用标明路径而自如地向调用系统
函数一样了.方法如下.例如:函数randomXiao如果要声明为全局函数,需要把第一行改为:

_global.randomXiao=function(n,m){
//statment
}

对全局函数的概念不很清楚的朋友不用被这个名词吓倒.
这样改了函数第一行之后,在任何地方,比如在一个MC里,直接用(对,直接用,不用加_root路径了)randomXiao(n,m)就可以了.

方法就是楼上说的,你将返回的随机数赋给textbox即可。
textbox1.Text=返回的数。


罗城仫佬族自治县15031278544: C#中随机数生成器是哪个函数? -
欧古河车: 函数是这样用,比如100至999的随机数Random ran=new Random();int RandKey=ran.Next(100,999); 不过这样会有重复,可以给Random一个系统时间做为参数,以此产生随机数,就不会重复了 System.Random a=new Random(System.DateTime.Now.Millisecond); int RandKey =a.Next(10);

罗城仫佬族自治县15031278544: 求c#产生随机数的函数
欧古河车: Random ra = new Random(); 或 Random ra = new Random(int seed); public int Next(); 用法:ra.Next(); 它返回一个大于或等于零而小于2,147,483,647的数,这并不满足我们的需要,下面我们介绍它的重载函数和其它一些方法....

罗城仫佬族自治县15031278544: 在C#中产生随机数的函数及用法? -
欧古河车: 给你的完整的,以前做的using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Runtime;using System.Threading;namespace ...

罗城仫佬族自治县15031278544: C#中的取随机数字的代码是什么? -
欧古河车: Random random = new Random(); int a = random.Next();

罗城仫佬族自治县15031278544: C#语言中随机产生数的公式是什么? -
欧古河车: Random random=new Random(); random.next(1000,9999); 产生一千到9999之间的随机数

罗城仫佬族自治县15031278544: c#中,怎么产生一个随机数? -
欧古河车: .net.Frameword中提供了一个专门产生随机数的类System.Random,此类默认情况下已被导入,编程过程中可以直接使用.我们知道,计算机并不能产生完全随机的数字,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选...

罗城仫佬族自治县15031278544: 用C#编写一个生成随机数的函数 -
欧古河车: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Threading; public class Student { const string RANDOMCONTENTS = "...

罗城仫佬族自治县15031278544: C#中的随机函数是什么啊?跟C、C++一样吗?怎么去用?
欧古河车: use System.Random Class: using System; int theSeed = DateTime.Now.Second; Random rng = new Random( theSeed ); double d = rng.NextDouble(); int i = rng.Next(); ....

罗城仫佬族自治县15031278544: C#中怎么获取1到100的随机数? -
欧古河车: 可以使用两种方式初始化一个随机数发生器:第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:Random ro = new Random(); 第二种方法可以指定一个int型参数作为随机种子:int iSeed=10; Random ro = new Random(10);...

罗城仫佬族自治县15031278544: C#产生随机数 -
欧古河车: Random r = new Random();int a = r.Next(0, 99);

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网