关于Random中的随机数种子Seed

时间:2021-07-11 00:19:59

  Random初始化的时候,可以以一个INT32作为参数,称为seed,MSDN上的解释是:“伪随机数是以相同的概率从一组有限的数字中选取的......随机数的生成是从种子值开始......”

  所有标准库提供的Random函数其实都是假Random,提供的随机数也是伪随机数,真正的Random函数式不需要Seed的。所谓假Random,是指所返回的随机数字其实是一个稳定算法所得出的稳定结果序列,而不是真正意义上的随机序列。 Seed就是这个算法开始计算的第一个值。所以就会出现只要seed是一样的,那么后续所有“随机”结果和顺序也都是完全一致的。 通常情况下,你可以用 DateTime.Now.Millisecend() 也就是当前始终的毫秒来做Seed .因为毫秒对你来说是一个1000以内的随即数字。 这样可以大大改善保准库的Random结果的随机性。 不过这仍然算不上是完全随机,因为重复的概率还是千分之一。

  需要注意的是,如果一直调用标准库Random,那么在调用了N次以后,输出结果就会循环最开始的序列了。也就是说,标准库Random所能生成的不同结果的个数也是有限的。32位系统一般也就是几万次以后就会出现重复。可以到网上找一个真正的随机函数,以替换标准库Random。

关于Random中的随机数种子Seed的更多相关文章

  1. numpy.random中的shuffle和permutation以及mini-batch调整数据集(X, Y)

    0. numpy.random中的shuffle和permutation numpy.random.shuffle(x) and numpy.random.permutation(x),这两个有什么不 ...

  2. PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

  3. Random 中的种子怎么理解

    种子就是生成随机数的根,就是产生随机数的基础.计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数.Java项目中通常是通过Math.random方法和R ...

  4. 洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章<扫雷与算 ...

  5. Numpy&period;random中shuffle与permutation的区别&lpar;转&rpar;

    huffle与permutation的区别 函数shuffle与permutation都是对原来的数组进行重新洗牌(即随机打乱原来的元素顺序):区别在于shuffle直接在原来的数组上进行操作,改变原 ...

  6. 2&period;掌握numpy数组

    一.改变数组形态 reshape()--通过改变数组的维度改变数组形态 import numpy as np Array=np.arange(1,17,1) Array Array_1=np.aran ...

  7. 随机数种子&lpar;random seed&rpar;

    在科学技术和机器学习等其他算法相关任务中,我们经常需要用到随机数,为了把握随机数的生成特性,从随机数的随机无序中获得确定和秩序.我们可以利用随机数种子(random seed)来实现这一目标,随机数种 ...

  8. 总结verilo*生随机数的&dollar;random和seed

      $random(seed)是verilog中最简单的产生随机数的系统函数. 在调用系统函数$random(seed)时,可以写成三种样式:1)$random,2)$random(),3)$rand ...

  9. Go中使用seed得到相同随机数的问题

    1. 重复的随机数 废话不多说,首先我们来看使用seed的一个很神奇的现象. func main() { for i := 0; i < 5; i++ { rand.Seed(time.Now( ...

随机推荐

  1. Memcached&plus;PHP&plus;Mysql&plus;Linux 实践

    首先确保你的服务器环境已经具备了memcached和lamp,关于在Linux上搭建memcahced+php环境可以参考我的另外一篇帖子( http://www.cnblogs.com/codeAB ...

  2. nginx的pass&lowbar;proxy遇到的坑

    Pass_proxy走内网,被请求方的php使用remote_addr得到就是转发机器的内网地址,如192.168.10.141这样的.走外网,被请求方php的remote_addr得到就是转发机器的 ...

  3. jquery树形菜单完整代码

    本实例实现了树形的动态菜单,兼容IE8,火狐,Chrome等浏览器.使用了jQuery的toggle() 方法.效果和代码如下: <!DOCTYPE html PUBLIC "-//W ...

  4. fastjson反序列化

    package cn.jsonlu.passguard.utils; import com.alibaba.fastjson.JSON; import java.lang.reflect.Type; ...

  5. BZOJ 3110&lpar;&lbrack;Zjoi2013&rsqb;K大数查询-区间第k大&lbrack;段修改&comma;在线&rsqb;-树状数组套函数式线段树&rpar;

    3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec   Memory Limit: 512 MB Submit: 418   Solved: 235 [ Submit][ ...

  6. 微信公众号开发(三)获取access&lowbar;token

    微信公众号开发(三)获取access_token 1.说明 access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.acce ...

  7. 通过C&num;学Proto&period;Actor模型》之Remote

    Proto.Actor中提供了基于tcp/ip的通迅来实现Remote,可以通过其Remot实现对Actor的调用. 先来看一个极简单片的远程调用. 码友看码: 引用NuGet包 Proto.Acto ...

  8. c&plus;&plus;为什么要面向对象?

    前言 c和c++的区别是什么?不可置否,最重要的就是c++的编程思想是面向对象,而c的编程思想是面向过程,这是它们的本质区别,如果你在使用c++编程时使用的还是面向过程的编程思想,那么还不如使用c,因 ...

  9. var 全局变量 局部变量

    var 定义的不一定是局部变量 全局变量: 过程体(包括方法function(){},对象Object={})外的所有的变量,不管有没有加var关键字,他都是全局变量. 局部变量: 在过程体内(方法, ...

  10. 性能测试十二:jmeter进阶之java请求参数化

    如项目中的ip.端口号之类的,都可以在此代码中定义 public Arguments getDefaultParameters() { // TODO Auto-generated method st ...