回 帖 发 新 帖 刷新版面

主题:关于RND函数的问题(请教)

本人是QB的初学者
刚刚学到RND函数,得知其的作用是随机产生一大于0小于1的数
但我只要一运行,结果的值却总是一个".7055475"  
不管运行多少次,结果只这一个,很纳闷

谁知道怎么回事请告诉我一下,谢谢了

回复列表 (共22个回复)

沙发

难道是我用的QB版本的问题?
我在RDN之间加上了:randomize timer后  每次随机产生的数就不一样了

迷茫  谁告诉我一下,这是为什么

板凳

这倒不一定.....你关了QB.再上QB运行你的程序...又会得到另一个不断重复的数.
所谓"伪随机"  嘿嘿..就是这么来的...所以老老实实在前面加:randomize timer 吧

3 楼

RANDOMIZE TIMER的意思是让随机种子由于时间的变化而不断的变化,从而产生的随机数也不一样.电脑产生的随机数其实不是真正意义上的随机,产生随机数的过程就像求一个代数式的值一样,只不过无论代入几这个代数式的值一定会落到0--1之间,RANDOMIZE 可以理解为要代入的值。

4 楼

[quote]这倒不一定.....你关了QB.再上QB运行你的程序...又会得到另一个不断重复的数.
所谓"伪随机"  嘿嘿..就是这么来的...所以老老实实在前面加:randomize timer 吧[/quote]

不管关上多少次,再运行多少次,只要不加randomize,它的值就只会是那一个.
当然,加上for循环的话: for n=1 to 10
                      print rnd
这样的话,得出的10个数都不相同;但是每次运行的话,得出的10个数还是一样的

5 楼

[quote]RANDOMIZE TIMER的意思是让随机种子由于时间的变化而不断的变化,从而产生的随机数也不一样.电脑产生的随机数其实不是真正意义上的随机,产生随机数的过程就像求一个代数式的值一样,只不过无论代入几这个代数式的值一定会落到0--1之间,RANDOMIZE 可以理解为要代入的值。[/quote]

再请教下,randomize timer是属于什么? 语句定义符还是一个函数名?

6 楼

randomize是系统函数:生成随机种子
系统的伪随机原则是给一个特定的程序点一个特定的随机种子,在此基础上生成一个伪随机数
所以所有相同位置的伪随机数都是一样的,而不同位置的伪随机数则是不同的
randomize是给全程序生成随机种子的,timer是系统值,是当前时间
如果你两天的同一时刻执行程序,得到的结果应该一样

7 楼

[quote]randomize是系统函数:生成随机种子
系统的伪随机原则是给一个特定的程序点一个特定的随机种子,在此基础上生成一个伪随机数
所以所有相同位置的伪随机数都是一样的,而不同位置的伪随机数则是不同的
randomize是给全程序生成随机种子的,timer是系统值,是当前时间
如果你两天的同一时刻执行程序,得到的结果应该一样[/quote]
基本上是明白了. 
不知能否给个例子说明下"不同位置的伪随机数则是不同的"

8 楼

[quote]不管关上多少次,再运行多少次,只要不加randomize,它的值就只会是那一个.
当然,加上for循环的话: for n=1 to 10
                      print rnd
这样的话,得出的10个数都不相同;但是每次运行的话,得出的10个数还是一样的
[/quote]
我是针对这个告诉你的
10个rnd在程序执行的过程中分别相当于在10个不同的位置执行了吧
这就是所谓“不同位置的伪随机数则是不同的”

9 楼

'36选7
randomize timner
dim u(35),i
do
cls
t=""
for i=0 to 35
u(i)=0
next
j=0
while j<7
q=fix(rnd*35)
if u(q)=0 then
p$=str(q)+" "
print p$;
u(q)=1
j=j+1
end if
wend
w=fix(rnd*99+1)
d$=" "+str(w)+"%"
print d$
a$=input$(1)
if a$=chr$(27) then exit do
loop

10 楼


p$=str(q)+" "

d$=" "+str(w)+"%"
应该为
p$=str$(q)+" "
d$=" "+str$(w)+"%"

我来回复

您尚未登录,请登录后再回复。点此登录或注册