如何创建每次调用返回不同值的随机数生成器?VB代码返回重复值
解决VB中Random每次生成相同数字的问题
问题出在你每次需要随机数时都新建了一个Random实例。Random默认使用系统当前时钟作为种子,如果代码执行速度很快,多次创建的Random对象会使用相同的种子,导致生成完全相同的随机数序列。
修复方案
将Random实例声明为类级别的成员变量,只初始化一次,之后每次需要随机数时调用该实例的Next()方法即可:
' 在类的顶部声明Random实例(类级别变量) Private rand As New Random() ' 在需要生成随机数的方法中调用 Dim approval As Integer = rand.Next(0, 9)
原理说明
- 类级别的
Random实例只会在类初始化时创建一次,种子也只会设置一次。 - 每次调用
rand.Next(0, 9)时,都会基于之前的随机数序列生成下一个不同的数值,实现真正的随机效果。 - 如果需要生成不同范围的随机数,只需要调整
Next()方法的参数即可(比如rand.Next(1, 100)生成1到99的整数)。
内容的提问来源于stack exchange,提问作者Daniel Stiff
相关产品推荐
相关产品推荐

