首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

Rnd 函数的有关问题

2012-03-24 
Rnd 函数的问题这个函数虽然产生的是随机数,但是只要算法不变的话,每次产生的随机数总是不变的,换了电脑也

Rnd 函数的问题
这个函数虽然产生的是随机数,但是只要算法不变的话,每次产生的随机数总是不变的,换了电脑也是这样,这个是怎么回事?而且给它传不同的参数的话结果还是一样,求教

[解决办法]
msdn中的解释和例子

Number 的值决定了 Rnd 生成随机数的方式。

由于每一次后续调用 Rnd 函数都用序列中前一个生成的数作为下一个数的种子,因此对于任何给定的初始种子都会生成相同的数字序列。

在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有一个基于系统计时器的种子。

' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
Dim value As Integer = CInt(Int((6 * Rnd()) + 1))

来自:
http://msdn.microsoft.com/zh-cn/library/f7s023d2(v=vs.80).aspx


[解决办法]
在Rnd函数之前,使用Randomize语句
[解决办法]
使用强随机。

Dim b(7) As Byte
Dim l As Long
Dim i As Integer
Dim t As Integer
Dim r As New System.Security.Cryptography.RNGCryptoServiceProvider
r.GetNonZeroBytes(b)
l = BitConverter.ToInt64(b, 0)
i = BitConverter.ToInt32(b, 0)
t = Rnd() * 100000

l 跟 i 都是 强随机生成的随机数。

t 是 rnd 生成的随机数。

热点排行