在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. C#窗体嵌入SetParent的用法

    模块化的开发,将模块合并到一起的时候,遇到了Mdi不能添加到其它窗口下的问题. 分两种情况: 将mdi窗口A设成普通窗口B的子控件,需要将A的TopLevel设置成false,但是Mdi窗口的TopL ...

  2. Android---页面跳转

    1.首先在一个布局文件(.XML)中绘画了一个跳转按钮(id为btn1): <Button         android:id="@+id/btn1"         an ...

  3. TableStore:单行操作

    说明: 首先需要添加TableStore的依赖 <dependency> <groupId>com.aliyun.openservices</groupId> &l ...

  4. DRF 视图组件代码

    序列化器代码 # 声明序列化器from rest_framework import serializersfrom djangoDome.models import Book class Publis ...

  5. 免安装版本Mysql配置

    免安装版本mysql配置如下:(本人使用的是5.6.42) 1. 解压后将/bin目录配置在系统变量中 2. 在mysql目录下新建my.ini文件配置如下信息: [mysqld] basedir=D ...

  6. 【Git使用】SourceTree可视化工具的安装和使用攻略

    1,下载并安装 sourceTree http://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.6.14 ...

  7. ubantu 与Windows 资源共享

    Linux与Windows共享文件夹之samba的安装与使用(Ubuntu为例)   作者:@gzdaijie本文为作者原创,转载请注明出处:http://www.cnblogs.com/gzdaij ...

  8. 常见排序算法 - Java实现

    1.冒泡排序 每次比较相邻的两个元素大小,调整顺序.从头到尾执行一轮(i),最大数值的元素就排到最后.每次从头到尾执行一轮,都会排好一个元素(length - i - 1).这就是说一个包含 n 个元 ...

  9. ASP.NET WebApi 图片上传

    以下是代码的实现过程: Html页面表单布局: <form id="UpPicture" enctype="multipart/form-data" ac ...

  10. anchor values list