TI-BASIC随机数如何去重?
刚入手ti-nspire cas 大黑机器。感觉其中编程还有一些意思,编写的程序小巧。我编写了一个随机数的问题,即随机产生1-10中的4个不同数字并显示出来,但编好运行后总是在显示结果中4个数字会有重复的。我在VB中用相同思路的代码编写就没有问题,所以现在我把代码写出来,敬请高手指出问题!谢谢!Define aa()=
Prgm
for i,1,4
Lbl sta
a(i):=int(rand()*10)+1
If i>2 Then
for j,1,i-1
if a(i)=a(j) then
Goto sta
EndIf
EndFor
EndIf
Disp a(i)
EndFor
EndGrgm
敬请高手指出问题所在,或者ti-basic本身就不支持这样的随机代码和数组吗?谢谢!
我似乎没见过用圆括号表示下标的语言
而且随机数的话,直接用randint还是ranint我忘了,看看CATALOG怎么说 本帖最后由 超越说 于 2014-7-14 23:18 编辑
VB 和TI-BASIC 差距很大,就像TC上运行的程序常常不能在VC++上运行一样。
建议楼主先看置顶贴的编程入门教程。 VB 和TI-BASIC 差距很大,就像TC上运行的程序常常不能在VC++上运行一样。
建议楼主先看置顶贴的编程入门教程。
另外,楼主编程的目的,伟大的TI早已为我们想到了, 输入 randInt(1,10,4) 试试看吧 超越说 发表于 2014-7-14 23:17
VB 和TI-BASIC 差距很大,就像TC上运行的程序常常不能在VC++上运行一样。
建议楼主先看置顶贴的编程入门教 ...
谢谢大神认真的回答!你说的randInt(1,10,4)我试了试,但运行的结果是从1-10中随机选4个数字,并不能保证不重复。我希望是从1—10中选出不重复的随机4个数字,如果有好的方法请不吝赐教哟!谢谢 _14522 发表于 2014-7-14 20:30
我似乎没见过用圆括号表示下标的语言
而且随机数的话,直接用randint还是ranint我忘了,看看CATALOG怎么说
请问,应该怎么表示下标呢?我只是看vb是这么表示数组的。也许在TI-BASIC中这样做是错误的?谢谢指导! If i>2 Then改为If i>1 Then
在TI-basic中,数组是用方括号[]读取数组某项内容,而小括号()一半用于函数的参数输入
建议还是用方括号,这个才是数组正确表示方法
Define aa()=
Prgm
a:={}
for i,1,4
Lbl sta
a:=int(rand()*10)+1
If i>1 Then
for j,1,i-1
if a=a then
Goto sta
EndIf
EndFor
EndIf
EndFor
disp a
EndGrgm lazydog 发表于 2014-7-15 10:16
If i>2 Then改为If i>1 Then
在TI-basic中,数组是用方括号[]读取数组某项内容,而小括号()一半用于函数的 ...
效率高的方法应该是"洗牌"
利用随机数来做下标交换 数组顺序 可以随机一堆数然后检查前四个有没有重复 有就删去那一个 再检查 直到前四个没有重复 然后输出这四个数 非常感谢各位大神不吝赐教,让我学习了很多,程序已经调试成功了!谢谢! lazydog 发表于 2014-7-15 10:16
If i>2 Then改为If i>1 Then
在TI-basic中,数组是用方括号[]读取数组某项内容,而小括号()一半用于函数的 ...
谢谢!你的建议非常重要,是我的错误,现在已经修改成功!万分感谢! 敢不敢不要用goto?
NS具有完善的控制结构,9860那种goto的思维就不要带进来了
超越说 发表于 2014-7-14 23:17
VB 和TI-BASIC 差距很大,就像TC上运行的程序常常不能在VC++上运行一样。
建议楼主先看置顶贴的编程入门教 ...
貌似TC是16位数吧,不过作为一个OIer一直用G++。。 wtof1996 发表于 2014-7-17 10:42
敢不敢不要用goto?
NS具有完善的控制结构,9860那种goto的思维就不要带进来了
高手好!你的建议特别好,可是在下才疏学浅,知道goto应该少用或不用,但总是没有思路。如果有时间麻烦你看看我的另一个帖子http://www.cncalc.org/thread-10576-1-1.html,就是请教goto语句的,烦请指导!
页:
[1]