如何在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
相关产品推荐
相关产品推荐

