zoukankan      html  css  js  c++  java
  • Random类取随机数小测试

      随机数是编程中也会常遇到的,之前有对C#获取随机数的问题瞎逼逼了几句。现在再更深入一点点了解随机数的获取。编程这些小知识点就这样,越是深入一点点,越是爽,额......好像说错了?

    从MSDN网上copy几句原理说明

      表示伪随机数生成器,这是一种能够产生满足某些随机性统计要求的数字序列的设备。伪随机数字从一组有限的数字选择以相同的概率。 因为数学算法可用于选择它们,但它们是充分随机实用的角度而言,所选的数字不完全随机的。(关键词:伪伪伪......随机数)

      Random类源代码:Reference Source

      如果同一个种子用于单独 Random 对象,则它们将生成相同的一系列随机数字。 这可以是用于创建测试套件,用于处理随机值,或者用于重播从随机数字派生其数据的游戏。 但请注意, Random 不同版本的.NET Framework 下运行的进程中的对象可能会返回不同的随机数字的序列,即使它们使用相同的种子值实例化。若要生成的随机数的不同序列,您可以种子值依赖于时间,从而产生不同的系列的每个新实例 Random。无参数 Random() 构造函数使用系统时钟生成其种子值。 不过,由于时钟具有有限的解决方法,使用无参数构造函数来创建不同 Random 中连续的对象创建生成的随机数的相同序列生成器。 在大多数 Windows 系统, Random 在另一个 15 毫秒内创建的对象可能会遇到的相同种子值。(关键:一种子,一序列;避免多个实例化

    更多详解 --》

    对原理说明的小结

      感谢N年前语文老师的不倦教育,总结能力很烂,总算还是有点点,没全忘了。

    简单地说:random生成的是伪......随机数序列,一个种子一批数字序列,尽量避免多实例化

    小测试

    1、相同的种子,生成相同的随机数序列。

    2、多实例化产生的尴尬:使用无参 Random() ,极短时间内产生的数字序列相同。

    代码(网页版的,代码分后端和前端)

    C#写的方法,简单写了三种方法实例化Random类,

    以‘1’为种子全局实例化了一个random对象ran;

    在方法中以参数‘seed’为种子实例化另一个random对象tRandom;

    使用无参数的Random实例化。

    方法返回Random每种方式实例化对象单个随机数,循环产生的多个随机数

    前端js,写了个方法,点击按钮,异步请求后台方法计算的随机数

    初始页面

    界面简单,清晰,明了,易懂,美观,大方

    (重要说明:第一行为单个随机数,第二行多个随机数;第一列为方式1,第二列为方式2,第三列为方式3)

     开始测试

    (重要说明:第一行为单个随机数,第二行多个随机数;第一列为方式1,第二列为方式2,第三列为方式3)

    1、种子设置为‘1’,多次获取随机数

    测试结果说明:

    方式1和方式2的种子都是‘1’,所以产生的随机数列是一样的,获取的单个随机数和循环获取的多个随机数列都是一样的;

    方式3为Random类默认的时间种子,与方式1、2的种子不同,所以得到的结果与1和2不同;

    方式1和方式2在获取多个随机数方法中,是在循环之外实例化对象,结果这两种方式各自获取的是一组不相同的随机数。而方式3是在循环内实例化的,在运行中会多次实例化出对象,在极短的时间内实例化出的对象生成的数字序列是相同的,因此得到的是一组相同的随机数。

    多次获取随机数,即多次运行方法获取随机数,方式1和方式2的结果都是一样的,而方式3获取的结果不相同。说明 Random的“一种子,一序列”原则

    2、种子设置为‘2’,再次多次获取随机数

    测试结果说明:

    再次验证,Random的“一种子,一序列”原则

    华丽的分割线


    总结

     把这些鬼东西写出来,有助于加深记忆,更重要是更深入了解、把握。

  • 相关阅读:
    模拟行工程部署记录
    (转)如何将 Excel 文件导入到 Navicat for MySQL 数据库
    (转)Linux下安装firefox最新版
    spring4.x源码下载网盘
    手工下发支付业务以及日志查看过程
    在java web中获取该项目的根路径
    在js代码中调用jsp的变量
    ibtais中把clob数据类型转换成string并展示到前台
    ibtais中把clob数据类型转换成string并插入到数据库中
    spring报错:Caused by: java.lang.IllegalStateException: Cannot convert value of type for property : no matching editors or conversion strategy found
  • 原文地址:https://www.cnblogs.com/youler/p/6651514.html
Copyright © 2011-2022 走看看