真随机数生成

use*_*552 2 vb.net random numbers generator

所以基本上,我有这个函数应该在高数字和低数字之间生成两个随机整数,以在表格上形成一个点.我知道Random可以处理这个,但Random有一致性,而我需要数字在表单上完全随机.

例如,我生成的大多数点都出现在对角线上.这是我想要避免的.它应该遍布高低数字之间的形式.

这是我目前的功能:

Function GetNewLocation() As Point
    Randomize()
    Dim int1 As Integer = RandomNumber(6, 345)
    Randomize()
    Dim int2 As Integer = RandomNumber(35, 286)
    Return New Point(int1, int2)
End Function

Function RandomNumber(ByVal low As Integer, ByVal high As Integer) As Integer
    Randomize()
    Return New Random().Next(low, high)
End Function
Run Code Online (Sandbox Code Playgroud)

如何在点不在对角线上的情况下获得真正的随机数生成?

Eni*_*ity 5

每次创建新实例时,Random都会重置随机数生成器.由于默认构造函数Environment.TickCount用作种子,因此通常会返回相同的伪随机数序列.系统不会TickCount经常更新.这就是为什么你似乎得到了非随机数字.

尝试更改您的代码,如下所示:

Private _rnd As New Random()
Function RandomNumber(ByVal low As Integer, ByVal high As Integer) As Integer
    Return _rnd.Next(low, high)
End Function
Run Code Online (Sandbox Code Playgroud)