回 帖 发 新 帖 刷新版面

主题:[讨论]Rnd函数真的能做到完全的数学理论上的随机吗?---moz进来一下

a = 0: b = 0: c = 0: d = 0: e = 0: f = 0: g = 0: h = 0
For i = 1 To 10000
n = Int(Rnd * 79 + 1)
If n < 10 Then a = a + 1
If n >= 10 And n < 20 Then b = b + 1
If n >= 20 And n < 30 Then c = c + 1
If n >= 30 And n < 40 Then d = d + 1
If n >= 40 And n < 50 Then e = e + 1
If n >= 50 And n < 60 Then f = f + 1
If n >= 60 And n < 70 Then g = g + 1
If n >= 70 And n < 80 Then h = h + 1
Next i
Print a; b; c; d; e; f; g; h

运行这个程序,感觉产生随机数40以上的稍多一点.
要是一个一个地试,感觉更不好了,
不信你们可以运行下面这个程序76次,
n=int(rnd*76+1)
print n
出现50-59次数最多,60-76的次数不少,而0-20的次数真的很少.

回复列表 (共12个回复)

11 楼

楼主所说的是Rnd函数的随机值分布不均匀,而不是种子问题

12 楼

1.因为他没有预置种子,所以每次得到的结果必定相同或相似.
2.对于随机与概率的定义,可以翻翻数学书,那是不确定的.而且必定是分布均匀的,
  而分布均匀这个情况,是建立在<取样及次数尽可能的大>基础上的.
3.按照楼主的做法,区间值域是[1,79]
  而按照他的分类:
  [1,10)    有9个数值,理论概率应该是  9/79≈11.39%
  [10,20)   有10个数值,理论概率是    10/79≈12.66%
  .......
  [70,80)   有10个数值,理论概率是    10/79≈12.66%
4.应该按以下方法检验:
  A.每次检测,预置种子数
  B.加大循环量,
  C.比较概率,必定是分布均匀的
5.我按照以下编码运行,运行时间越久结果越接近预计结果.

DEFLNG A-Z
DIM c(7)
CLS
RANDOMIZE TIMER
DO UNTIL INKEY$ = CHR$(27)
   cc = cc + 1
   n = INT(RND * 79 + 1)
   m = n \ 10
   c(m) = c(m) + 1
   LOCATE 1, 1
   PRINT cc,n
   FOR i = 0 TO 7
       PRINT c(i), c(i) / cc * 100;"%"
   NEXT
LOOP

我来回复

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