Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 随机不那么随机-取决于之前的通话_.net_Vb.net_Random - Fatal编程技术网

.net 随机不那么随机-取决于之前的通话

.net 随机不那么随机-取决于之前的通话,.net,vb.net,random,.net,Vb.net,Random,可能重复: 在vb.net中,我使用此函数获取随机数: Private Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer Dim Generator As System.Random = New System.Random() Return Generator.Next(Min, Max) End Function 我从另一个函数多次调用GetRandom函数,该函数如下

可能重复:

在vb.net中,我使用此函数获取随机数:

  Private Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer
    Dim Generator As System.Random = New System.Random()
    Return Generator.Next(Min, Max)
  End Function
我从另一个函数多次调用GetRandom函数,该函数如下(简化):

然后我有了这个

For i As Integer = 1 to 10000
  GetRandomPerson()
Next
我的问题是,似乎存在对GetRandom调用的依赖性,似乎如果性别为1,Zip将永远不会高于某个值(约5000),如果性别为2,Zip将始终高于某个值(约5000)


为什么会这样,我遗漏了什么?

您在每次调用中都实例化了
随机
。这就是为什么您会看到这样的结果:

Dim Generator As System.Random = New System.Random()
Random
使用基于当前时间的种子生成伪随机序列(如果具有相同的种子,则将生成相同的序列)-如果像您这样在循环中调用,则种子中可能会有0个更改,反复生成相同的值

将实例移到函数之外,以便只使用生成器的单个实例


我建议阅读Jon Skeet关于的这篇文章。

Dim生成器作为System.Random=New System.Random()从function@J.Steen在阅读了另一个答案后,我同意,它给了我解决方案/我应该删除我的问题吗?@Muleskinner如果你觉得它对stackoverflow社区没有贡献,删除它。如果您觉得有非常宝贵的额外信息,请不要删除它。=)
Dim Generator As System.Random = New System.Random()