主题:[讨论]求救!随机生成100位0、1的随机数
lilian_1208
[专家分:0] 发布于 2010-03-12 22:56:00
生成100位0、1的随机数,例如100101011001010……并在生成的过程中,与text中的内容进行匹配
sjs=RAND()
do case
case sjs<0.5
a=0
otherwise
a=1
endcase
就是现在没有办法把所生成的0和1连接起来
求高手指点,或加小女QQ,450939941
最后更新于:2010-03-13 00:28:00
回复列表 (共17个回复)
沙发
sywzs [专家分:5650] 发布于 2010-03-13 06:00:00
请参考:[email]http://bbs.pfan.cn/post-317599.html[/email]
板凳
狐说八道 [专家分:860] 发布于 2010-03-13 09:38:00
a = ''
= RAND(-1)
for i = 1 to 100
a = a + iif(RAND()<0.5, '0', '1')
next
?a
3 楼
lilian_1208 [专家分:0] 发布于 2010-03-13 12:14:00
谢谢,那请问哦,如果我有一个text,里面的数据为101,那如何做到一边在生成随机数的同时,一边与text里的文本做匹配呢?
4 楼
sywzs [专家分:5650] 发布于 2010-03-14 04:12:00
把2楼的 a = a + iif(RAND()<0.5, '0', '1') 改动一下
a = a + ROUND(RAND(),0)
5 楼
狐说八道 [专家分:860] 发布于 2010-03-14 14:48:00
b='101'
a = ''
= RAND(-1)
for i = 1 to LEN(ALLTRIM(b))
a = a + iif(RAND()<0.5, '0', '1')
next
?a, b, a=b
6 楼
lilian_1208 [专家分:0] 发布于 2010-03-14 15:29:00
在进一步~~~~
a='00',b='10',系统随机发出1万次序列号,进行1万次匹配,最后得出,a的获胜次数,b的获胜次数,a的最小仲裁长度和最大仲裁长度。每一次都是匹配到才停止,再进行下一轮。
例如,系统发出0110....直到,第四位的出现,才发生匹配,b获胜。
请各位前辈支个招!~谢谢~~~
7 楼
狐说八道 [专家分:860] 发布于 2010-03-15 09:42:00
不知道是不是这个意思:
CLEAR
= RAND(-1)
LOCAL i, k, a, b, c, an, bn, zlen
FOR k = 1 TO ROUND(RAND()*5, 0)+1
an = 0
bn = 0
zlen = ROUND(RAND()*10, 0)+1
b = randstring(zlen)
a = randstring(zlen)
DO WHILE a = b
a = randstring(zlen)
ENDDO
FOR i = 1 TO 10000
c = randstring(zlen)
an = an + IIF(c=a, 1, 0)
bn = bn + IIF(c=b, 1, 0)
NEXT
? zlen, a, b, an, bn
NEXT
FUNCTION randstring(slen)
LOCAL i, a
a = ''
for i = 1 to slen
a = a + iif(RAND()<0.5, '0', '1')
next
RETURN a
ENDFUNC
另,‘a的最小仲裁长度和最大仲裁长度’是说什么意思?
8 楼
lilian_1208 [专家分:0] 发布于 2010-03-15 23:10:00
仲裁长度就是指仲裁器发出多少个随机01序列后,便仲裁出结果,即发现匹配。
例如a=01,b=10,随机序列00110....当出现到第三位时,即发生匹配,a胜出,则该仲裁长度为3
以此类推,10000个序列号发生10000次匹配,则会有不同的仲裁长度。
用foxpro分别算出a和b的获胜次数,以及a和b各自的最大仲裁长度和最小仲裁长度。
请帮忙求解,谢谢!~~~~
9 楼
moz [专家分:37620] 发布于 2010-03-16 01:58:00
=RAND(-1)
a="001"
b="110"
amin=0
amax=0
aex=0
lena=LEN(a)
bmin=0
bmax=0
bex=0
lenb=LEN(b)
s=space(max(lena,lenb))
FOR i=1 TO 10000
s=s+CHR(48+ROUND(RAND(),0))
IF RIGHT(s,lena)==a THEN
IF amin=0 THEN
amin=i
amax=i
ELSE
amax=i
ENDIF
aex=aex+1
ENDIF
IF RIGHT(s,lenb)==b THEN
IF bmin=0 THEN
bmin=i
bmax=i
ELSE
bmax=i
ENDIF
bex=bex+1
ENDIF
NEXT
?amin,bmin,amax,bmax,aex,bex
10 楼
狐说八道 [专家分:860] 发布于 2010-03-16 10:01:00
CLEAR
= RAND(-1)
LOCAL i, k, a, b, c, zlen, num
LOCAL an, amin, amax, apos, bn, bmin, bmax, apos
num = 100
*!* FOR k = 1 TO ROUND(RAND()*5, 0)+1
an = 0
bn = 0
zlen = ROUND(RAND()*3, 0)+1
b = randstring(zlen)
amin = num
amax = 0
a = randstring(zlen)
DO WHILE a = b
a = randstring(zlen)
ENDDO
bmin = num
bmax = 0
FOR i = 1 TO 10000
c = randstring(num)
apos = AT(a, c)
bpos = AT(b, c)
*!* ?apos, bpos
IF apos>0 and apos<=bpos THEN
an = an + 1
amin = IIF(apos<amin, apos, amin)
amax = IIF(apos>amax, apos, amax)
ENDIF
IF bpos>0 and bpos<apos THEN
bn = bn + 1
bmin = IIF(bpos<bmin, bpos, bmin)
bmax = IIF(bpos>bmax, bpos, bmax)
ENDIF
*!* ? an, amin, amax, bn, bmin, bmax
NEXT
? zlen, a, an, amin, amax, b, bn, bmin, bmax
*!* NEXT
FUNCTION randstring(slen)
LOCAL i, a
a = ''
for i = 1 to slen
a = a + iif(RAND()<0.5, '0', '1')
next
RETURN a
ENDFUNC
我来回复