You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SmallBasic中生成不重复的随机数并存入数组?

实现SmallBasic中不重复随机数数组的方法

当然可以做到!你现在的代码问题在于没有检查随机数是否重复,而且还有个小拼写错误(Math.GetRandomNumer应该是Math.GetRandomNumber)。要生成每个元素唯一的随机数数组,核心思路就是每次生成随机数后,先检查它是否已经在数组里,重复的话就重新生成,直到拿到不重复的数。

下面是修改后的完整代码,我会一步步解释逻辑:

Count = 10
' 初始化一个指定长度的数组(可选,但让代码更清晰)
var = Array.Create(Count)

For i = 1 To Count
    ' 先生成初始随机数
    randomNum = Math.GetRandomNumber(100)
    ' 标记是否重复,默认假设重复,进入循环检查
    isDuplicate = "True"
    
    ' 循环直到找到不重复的数
    While isDuplicate = "True"
        isDuplicate = "False"
        ' 遍历数组中已经填充好的元素(只检查前i-1个,因为第i位还没填)
        For j = 1 To i - 1
            If var[j] = randomNum Then
                ' 发现重复,标记状态并重新生成随机数
                isDuplicate = "True"
                randomNum = Math.GetRandomNumber(100)
                ' 跳出内层循环,重新开始检查
                Goto CheckAgain
            EndIf
        EndFor
        CheckAgain:
    EndWhile
    
    ' 将不重复的数存入数组
    var[i] = randomNum
    TextWindow.Write(var[i] + " ")
EndFor

关键逻辑说明:

  • 数组初始化:用Array.Create(Count)提前创建好长度为10的数组,让代码结构更清晰(SmallBasic支持动态数组,但初始化更规范)
  • 重复检查循环:用While循环确保只有不重复的数才会被存入数组。每次发现重复,就重新生成随机数,然后从头开始检查
  • 范围注意事项:如果你的Count值大于100,这个逻辑会陷入死循环(因为1-100只有100个不同的数)。如果需要生成更多不重复的数,记得把Math.GetRandomNumber(100)里的100改成比Count大的数字哦

这样运行代码后,你就能得到一个所有元素都唯一的随机数数组了!

内容的提问来源于stack exchange,提问作者ThatsBetter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:05:27