为什么用unchecked(Environment.TickCount*31)初始化一个新的Random()?

Sel*_*eny 4 c# random

我发现了这个Random实例的初始化:

var random = new Random(unchecked(Environment.TickCount * 31));
Run Code Online (Sandbox Code Playgroud)

为什么不简单地使用new Random()

Rob*_*vey 7

该关键字unchecked可防止在计算Environment.TickCount * 31整数溢出时抛出异常.

得到的计算本质上是一个随机整数(它抛弃了一堆高阶位),用于为随机数生成器播种.

请注意,Random Source for Random将此代码作为其无参数构造函数:

public Random() 
    : this(Environment.TickCount) {
  }
Run Code Online (Sandbox Code Playgroud)