获取重复的随机数 [英] Getting Duplicate Random Numbers

查看:67
本文介绍了获取重复的随机数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用此共享函数进行基本的随机数生成:

I'm doing basic random number generation using this Shared Function:

Public Shared Function RandomNumber(ByVal MaxNumber As Integer, Optional ByVal MinNumber As Integer = 0) As Integer

    'initialize random number generator
        Dim r As New Random(Date.Now.Ticks And &HFFFF)

        If MinNumber > MaxNumber Then
            Dim t As Integer = MinNumber
            MinNumber = MaxNumber
            MaxNumber = t
        End If

        Return r.Next(MinNumber, MaxNumber)

End Function

这样调用:dim x as integer = Random(2100000000)

Called like this: dim x as integer = Random(2100000000)

非常简单,种子值直接来自 MS 示例.

Very simple, and the seed value comes straight from a MS example.

问题是:我有时会收到重复的数字,但总是在通常至少相隔 5 或 10 分钟的时间创建.我可以查看我是否每秒或毫秒多次调用该函数,因为这会破坏"种子.但这些都是在很长一段时间内出现的.还有什么可能导致这种情况?

HERE'S THE PROBLEM: I'm getting duplicate numbers on occasion, but always created at times that are usually at least 5 or 10 minutes apart. I can see if I was calling the function multiple times per second or millisecond, because that'd kind of "breaks" the seed. But these are showing up at extended time spans. What else could be causing this?

推荐答案

重复种子问题?

最好将 r 定义为静态,以便在第一次调用时初始化一次.请参阅此答案 VB.NET 中的随机整数

It might be better defining r as static so that it is initialised once when first invoked. Refer to this answer Random integer in VB.NET

这篇关于获取重复的随机数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆