首页 > 解决方案 > rnd() 种子的内存位置

问题描述

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

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

有像几年前一样“偷看”和“戳”的记忆吗?

标签: vb.netbasic

解决方案


在这种情况下,每次运行代码时都会得到相同的数字,因为您提供了种子 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 方法。

从文档。

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

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


推荐阅读