艾上 发表于 2014-7-14 17:52:00

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本身就不支持这样的随机代码和数组吗?谢谢!

_14522 发表于 2014-7-14 20:30:42

我似乎没见过用圆括号表示下标的语言
而且随机数的话,直接用randint还是ranint我忘了,看看CATALOG怎么说

春上冰月 发表于 2014-7-14 23:17:28

本帖最后由 超越说 于 2014-7-14 23:18 编辑

VB 和TI-BASIC 差距很大,就像TC上运行的程序常常不能在VC++上运行一样。
建议楼主先看置顶贴的编程入门教程。

春上冰月 发表于 2014-7-14 23:17:38

VB 和TI-BASIC 差距很大,就像TC上运行的程序常常不能在VC++上运行一样。
建议楼主先看置顶贴的编程入门教程。

另外,楼主编程的目的,伟大的TI早已为我们想到了, 输入 randInt(1,10,4) 试试看吧

艾上 发表于 2014-7-15 06:23:05

超越说 发表于 2014-7-14 23:17
VB 和TI-BASIC 差距很大,就像TC上运行的程序常常不能在VC++上运行一样。
建议楼主先看置顶贴的编程入门教 ...

谢谢大神认真的回答!你说的randInt(1,10,4)我试了试,但运行的结果是从1-10中随机选4个数字,并不能保证不重复。我希望是从1—10中选出不重复的随机4个数字,如果有好的方法请不吝赐教哟!谢谢

艾上 发表于 2014-7-15 06:42:05

_14522 发表于 2014-7-14 20:30
我似乎没见过用圆括号表示下标的语言
而且随机数的话,直接用randint还是ranint我忘了,看看CATALOG怎么说

请问,应该怎么表示下标呢?我只是看vb是这么表示数组的。也许在TI-BASIC中这样做是错误的?谢谢指导!

lazydog 发表于 2014-7-15 10:16:18

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

诗诺比 发表于 2014-7-15 14:10:45

lazydog 发表于 2014-7-15 10:16
If i>2 Then改为If i>1 Then
在TI-basic中,数组是用方括号[]读取数组某项内容,而小括号()一半用于函数的 ...

效率高的方法应该是"洗牌"
利用随机数来做下标交换 数组顺序

rourou_Jun 发表于 2014-7-15 16:47:07

可以随机一堆数然后检查前四个有没有重复 有就删去那一个 再检查 直到前四个没有重复 然后输出这四个数

艾上 发表于 2014-7-15 18:40:00

非常感谢各位大神不吝赐教,让我学习了很多,程序已经调试成功了!谢谢!

艾上 发表于 2014-7-15 18:40:53

lazydog 发表于 2014-7-15 10:16
If i>2 Then改为If i>1 Then
在TI-basic中,数组是用方括号[]读取数组某项内容,而小括号()一半用于函数的 ...

谢谢!你的建议非常重要,是我的错误,现在已经修改成功!万分感谢!

wtof1996 发表于 2014-7-17 10:42:50

敢不敢不要用goto?
NS具有完善的控制结构,9860那种goto的思维就不要带进来了

_14522 发表于 2014-7-17 20:54:31

超越说 发表于 2014-7-14 23:17
VB 和TI-BASIC 差距很大,就像TC上运行的程序常常不能在VC++上运行一样。
建议楼主先看置顶贴的编程入门教 ...

貌似TC是16位数吧,不过作为一个OIer一直用G++。。

艾上 发表于 2014-7-18 07:17:04

wtof1996 发表于 2014-7-17 10:42
敢不敢不要用goto?
NS具有完善的控制结构,9860那种goto的思维就不要带进来了

高手好!你的建议特别好,可是在下才疏学浅,知道goto应该少用或不用,但总是没有思路。如果有时间麻烦你看看我的另一个帖子http://www.cncalc.org/thread-10576-1-1.html,就是请教goto语句的,烦请指导!
页: [1]
查看完整版本: TI-BASIC随机数如何去重?