rnd() 种子的内存位置

问题描述

一直在尝试创建一个小程序来加密/解密文本文件

想要使用已植入 4 个数字 (0-255) 的 RND() 函数。 几年前在我的 Apple IIE 上用 BASIC 做的,效果很好!(255^4=4,294,967,296 种可能的组合)。 将 4 个关键数字“戳”到内存位置,运行一个小循环以打印出 25 个随机数字。 将相同的数字“戳”到内存位置,再次运行程序,结果序列与第一次相同!

是否有像多年前那样“偷看”和“戳”的记忆?

解决方法

在这种情况下,您每次运行代码时都会得到相同的数字,因为您提供了种子 17。如果您在没有种子的情况下调用构造函数,您将得到不同的数字。我相信它是用系统时钟播种的。

MS Docs for Random

Private rnd As New Random(17)

Private Sub Button3_Click(sender As Object,e As EventArgs) Handles Button3.Click 
    Dim lst As New List(Of Integer)
    For i = 0 To 24
        lst.Add(rnd.Next)
    Next
    For Each item In lst
        Debug.Print(item.ToString)
    Next
End Sub

要将您的数字限制在特定范围内,请将参数传递给 Next 方法。

来自文档。

下一个(Int32) 返回一个小于指定最大值的非负随机整数。

下一个(Int32,Int32)
返回指定范围内的随机整数。