在C#中,产生随机数常用大方法是 new Random().Next(1,10)等方法。

但是仔细发现会有个问题:

看代码:

for (int i = ; i < ;i++ )
{
Console.WriteLine(new Random().Next(, ));
}    Console.ReadKey();

运行结果:

发现随机的数基本都是一样的。就有问题了,每次随机的都是一样的,就不是随机数了。

仔细查看 Random的构造函数

public Random() : this(Environment.TickCount)
{
}
/// <summary>Initializes a new instance of the <see cref="T:System.Random" /> class, using the specified seed value.</summary>
/// <param name="Seed">A number used to calculate a starting value for the pseudo-random number sequence. If a negative number is specified, the absolute value of the number is used. </param>
[__DynamicallyInvokable]
public Random(int Seed)
{
int num = (Seed == -) ? : Math.Abs(Seed);
int num2 = - num;
this.SeedArray[] = num2;
int num3 = ;
for (int i = ; i < ; i++)
{
int num4 = * i % ;
this.SeedArray[num4] = num3;
num3 = num2 - num3;
if (num3 < )
{
num3 += ;
}
num2 = this.SeedArray[num4];
}
for (int j = ; j < ; j++)
{
for (int k = ; k < ; k++)
{
this.SeedArray[k] -= this.SeedArray[ + (k + ) % ];
if (this.SeedArray[k] < )
{
this.SeedArray[k] += ;
}
}
}
this.inext = ;
this.inextp = ;
Seed = ;
}

无参的构造函数其实调用的是 有参的构造函数,传递的 默认值: Environment.TickCount

System.Environment.TickCount 获取开机时间函数。

也就是说每次传递进去的都是一样的值。

如果我们,改下代码,给 new Random()传参.

 for (int i = ; i < ;i++ )
{
Console.WriteLine(new Random(Guid.NewGuid().GetHashCode()).Next(, ));
}

这次的运行结果:

明显的不一样了。就是随机的效果了。

还有一种方式也可以实现随机的效果:

     Random rnd = new Random(); //在外面生成对象
for (int i = ; i < ;i++ )
{
Console.WriteLine(rnd.Next(, )); //调用同一个 对象产生随机数。
}

运行结果:

也可以实现随机的效果。

C#中的 new Random()的更多相关文章

  1. Python从题目中学习:random() module

    最近在给公司培训Python,布置了一道题: ----------------------------------------------------------------------------- ...

  2. numpy中的np.random.mtrand.RandomState

    1 RandomState 的应用场景概述 在训练神经网络时,苦于没有数据,此时numpy为我们提供了 “生产” 数据集的一种方式. 例如在搭建神经网络(一)中的 4.3 准备数据集 章节中就是采用n ...

  3. python中的随机函数random的用法示例

    python中的随机函数random的用法示例 一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据 ...

  4. java中的随机数Random

    java中一般有两种随机数,一个是Math中random()方法,一个是Random类. 一.Math.random()  :     随即生成0<x<1的小数 实例:如何写,生成随机生成 ...

  5. python3在pycharm中为什么导入random模块不能用? TypeError: 'module' object is not callable

    新手学python求大神指导,也用sys导入了random.py的路径,仍然不行. 刚刚排错貌似找到了问题的原因...那是因为我在pycharm中新建的python文件名就是random,所以当前目录 ...

  6. java中Scanner和random的用法

    Scanner是默认按照行来读取数字的. 创建一个用来输入的函数 Scanner scan=new Scanner(System.in):system.in是表示从控制台输入. 然后用一个变量类接收这 ...

  7. Python中模块之random的功能介绍

    random的功能介绍 random模块的方法如下: betavariate 获取一个range(0,1)之前的随机浮点数 方法:random.betavariate(alpha,beta) 返回值: ...

  8. js中Math之random,round,ceil,floor的用法总结

    1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分(返回小于等于n的最大整数). ...

  9. python中numpy的random模块

    1. rand(d0,d1,.....,dn)产生[0,1]的浮点随机数,括号里面的参数可以指定产生数组的形状    例如:np.random.rand(3,2)则产生 3×2的数组,里面的数是0-1 ...

随机推荐

  1. ubuntu 16.04 启用root用户方法,SSH允许root登陆

    1.使用:sudo passwd root设置root的密码,如下图所示: 2.使用su root来测试是否可以进入root用户,如果出现#说明已经设置root用户的密码成功,如下图所示: 3.进入到 ...

  2. RESTframwork之视图view

    一 在view.py 中: class AuthorView(APIView): def get(self, request): author_list = Author.objects.all() ...

  3. 自动化工具gulp搭建环境(详解)

    src:读取文件和文件夹       dest:生成文件(写文件)       watch:监控文件       task:定制任务         pipe:以流的方式处理文件 bower的安装和使 ...

  4. properties文件读取

    package properties; import java.io.FileInputStream; import java.io.FileNotFoundException; import jav ...

  5. 【Git使用】SourceTree+Git简单使用(Windows)(转)

    导读: 本人过去Git的可视化工具用的是TortoiseGit,虽然Android Studio也能进行版本管理,但是用下来,感觉SoureTree这款工具是最舒服的(免费的),下面就给大家介绍下我的 ...

  6. Mysql5.7 Linux安装教程

    1系统约定安装文件下载目录:/data/softwareMysql目录安装位置:/usr/local/mysql数据库保存位置:/data/mysql日志保存位置:/data/log/mysql 2下 ...

  7. scala-class

    object Scala { def main( args : Array[ String ] ) : Unit = { val p = , ); println( p ); p.move( , ); ...

  8. 47.纯 CSS 创作一个蝴蝶标本展示框

    html,body{ margin:; padding:; } body{ height: 100vh; display: flex; justify-content: center; align-i ...

  9. Retrofit简介与使用方法(翻译)

    简介 Retrofit 是一个Square开发的类型安全的REST安卓客户端请求库.这个库为网络认证.API请求以及用OkHttp发送网络请求提供了强大的框架.Retrofit库让从web api下载 ...

  10. Ubuntu 下安装 Swoole

    环境:Ubuntu16.04 apt-get update apa-get install apache2 php php-pear php-dev mysql-server gcc apache2 ...