C#中的 new Random()
在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()的更多相关文章
- Python从题目中学习:random() module
最近在给公司培训Python,布置了一道题: ----------------------------------------------------------------------------- ...
- numpy中的np.random.mtrand.RandomState
1 RandomState 的应用场景概述 在训练神经网络时,苦于没有数据,此时numpy为我们提供了 “生产” 数据集的一种方式. 例如在搭建神经网络(一)中的 4.3 准备数据集 章节中就是采用n ...
- python中的随机函数random的用法示例
python中的随机函数random的用法示例 一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据 ...
- java中的随机数Random
java中一般有两种随机数,一个是Math中random()方法,一个是Random类. 一.Math.random() : 随即生成0<x<1的小数 实例:如何写,生成随机生成 ...
- python3在pycharm中为什么导入random模块不能用? TypeError: 'module' object is not callable
新手学python求大神指导,也用sys导入了random.py的路径,仍然不行. 刚刚排错貌似找到了问题的原因...那是因为我在pycharm中新建的python文件名就是random,所以当前目录 ...
- java中Scanner和random的用法
Scanner是默认按照行来读取数字的. 创建一个用来输入的函数 Scanner scan=new Scanner(System.in):system.in是表示从控制台输入. 然后用一个变量类接收这 ...
- Python中模块之random的功能介绍
random的功能介绍 random模块的方法如下: betavariate 获取一个range(0,1)之前的随机浮点数 方法:random.betavariate(alpha,beta) 返回值: ...
- js中Math之random,round,ceil,floor的用法总结
1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分(返回小于等于n的最大整数). ...
- python中numpy的random模块
1. rand(d0,d1,.....,dn)产生[0,1]的浮点随机数,括号里面的参数可以指定产生数组的形状 例如:np.random.rand(3,2)则产生 3×2的数组,里面的数是0-1 ...
随机推荐
- C#窗体嵌入SetParent的用法
模块化的开发,将模块合并到一起的时候,遇到了Mdi不能添加到其它窗口下的问题. 分两种情况: 将mdi窗口A设成普通窗口B的子控件,需要将A的TopLevel设置成false,但是Mdi窗口的TopL ...
- Android---页面跳转
1.首先在一个布局文件(.XML)中绘画了一个跳转按钮(id为btn1): <Button android:id="@+id/btn1" an ...
- TableStore:单行操作
说明: 首先需要添加TableStore的依赖 <dependency> <groupId>com.aliyun.openservices</groupId> &l ...
- DRF 视图组件代码
序列化器代码 # 声明序列化器from rest_framework import serializersfrom djangoDome.models import Book class Publis ...
- 免安装版本Mysql配置
免安装版本mysql配置如下:(本人使用的是5.6.42) 1. 解压后将/bin目录配置在系统变量中 2. 在mysql目录下新建my.ini文件配置如下信息: [mysqld] basedir=D ...
- 【Git使用】SourceTree可视化工具的安装和使用攻略
1,下载并安装 sourceTree http://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.6.14 ...
- ubantu 与Windows 资源共享
Linux与Windows共享文件夹之samba的安装与使用(Ubuntu为例) 作者:@gzdaijie本文为作者原创,转载请注明出处:http://www.cnblogs.com/gzdaij ...
- 常见排序算法 - Java实现
1.冒泡排序 每次比较相邻的两个元素大小,调整顺序.从头到尾执行一轮(i),最大数值的元素就排到最后.每次从头到尾执行一轮,都会排好一个元素(length - i - 1).这就是说一个包含 n 个元 ...
- ASP.NET WebApi 图片上传
以下是代码的实现过程: Html页面表单布局: <form id="UpPicture" enctype="multipart/form-data" ac ...
- anchor values list