展开全部
好像两个答案都不对吧!
rnd: [0,1)
rnd*(-7): (-7,0]
rnd*(-7)+4: (-3,4]
int(rnd*(-7)+4)* : [-3,4]之间的整数,但取值为4的概率极小,仅当rnd取0时才会出现,理论概率为1/8388608
rnd*5: [0,5)
rnd*5-10: [-10,-5)
int(rnd*5-10):[-10,-6]之间的整数。
int(rnd*(-7)+4)*int(rnd*5-10):所以理论上,[-40,30]之间的部分整数
注:(-3)*(-10)=30是最大数啊,为什么两个答案都是18?
但实际上rnd函数并非一个真正的随机数字,而是一个周期为8388608(即2^23)的序列,当第一个rnd取值为0,第二个rnd必然取值为0.7641413,此时表达式的值为-28。
实际的取值范围是:-30、-28*、-27、-24、-21、-20、-18*、-16、-14、-12、-10、-9、-8、-7、-6、0*、6、7、8、9、10、12、14、16、18*、20、21、24、27、30。
其中:
-28:出现的概率极低,约为1/8388608
-18、18:出现的概率约为2/35
0:出现的概率约为1/7
其余未标注数字:出现的概率约为1/35
附:实测数据:进行50331648次测试,以上各值出现的次数:
a(-30) =1438024
a(-28) =4
a(-27) =1438034
a(-24) =1438088
a(-21) =1438072
a(-20) =1438088
a(-18) =2876062
a(-16) =1438030
a(-14) =1438020
a(-12) =1438052
a(-10) =1438030
a(-9) =1438022
a(-8) =1438056
a(-7) =1438072
a(-6) =1438054
a(0) =7190236
a(6) =1438078
a(7) =1438076
a(8) =1438020
a(9) =1438026
a(10) =1438034
a(12) =1438024
a(14) =1438032
a(16) =1438072
a(18) =2876162
a(20) =1438020
a(21) =1438038
a(24) =1438014
a(27) =1438028
a(30) =1438080
rnd: [0,1)
rnd*(-7): (-7,0]
rnd*(-7)+4: (-3,4]
int(rnd*(-7)+4)* : [-3,4]之间的整数,但取值为4的概率极小,仅当rnd取0时才会出现,理论概率为1/8388608
rnd*5: [0,5)
rnd*5-10: [-10,-5)
int(rnd*5-10):[-10,-6]之间的整数。
int(rnd*(-7)+4)*int(rnd*5-10):所以理论上,[-40,30]之间的部分整数
注:(-3)*(-10)=30是最大数啊,为什么两个答案都是18?
但实际上rnd函数并非一个真正的随机数字,而是一个周期为8388608(即2^23)的序列,当第一个rnd取值为0,第二个rnd必然取值为0.7641413,此时表达式的值为-28。
实际的取值范围是:-30、-28*、-27、-24、-21、-20、-18*、-16、-14、-12、-10、-9、-8、-7、-6、0*、6、7、8、9、10、12、14、16、18*、20、21、24、27、30。
其中:
-28:出现的概率极低,约为1/8388608
-18、18:出现的概率约为2/35
0:出现的概率约为1/7
其余未标注数字:出现的概率约为1/35
附:实测数据:进行50331648次测试,以上各值出现的次数:
a(-30) =1438024
a(-28) =4
a(-27) =1438034
a(-24) =1438088
a(-21) =1438072
a(-20) =1438088
a(-18) =2876062
a(-16) =1438030
a(-14) =1438020
a(-12) =1438052
a(-10) =1438030
a(-9) =1438022
a(-8) =1438056
a(-7) =1438072
a(-6) =1438054
a(0) =7190236
a(6) =1438078
a(7) =1438076
a(8) =1438020
a(9) =1438026
a(10) =1438034
a(12) =1438024
a(14) =1438032
a(16) =1438072
a(18) =2876162
a(20) =1438020
a(21) =1438038
a(24) =1438014
a(27) =1438028
a(30) =1438080
展开全部
msdn上说:
Rnd函数返回小于 1 但大于或等于 0 的值。
以下程序测试,证明Int(Rnd * (-7) + 4)有等4的时候:
Private Sub Command1_Click()
While Int(Rnd * (-7) + 4) <> 4
DoEvents
Wend
MsgBox ""
End Sub
那么也就是说int(rnd*5-10)有等于-10的时候,最后的结论是【-40,18】才是正确的,不知道你从哪找来的破书,哪个二百五作者给出的答案。(不会是你们老师给出的答案吧,真是害死人。)
Rnd函数返回小于 1 但大于或等于 0 的值。
以下程序测试,证明Int(Rnd * (-7) + 4)有等4的时候:
Private Sub Command1_Click()
While Int(Rnd * (-7) + 4) <> 4
DoEvents
Wend
MsgBox ""
End Sub
那么也就是说int(rnd*5-10)有等于-10的时候,最后的结论是【-40,18】才是正确的,不知道你从哪找来的破书,哪个二百五作者给出的答案。(不会是你们老师给出的答案吧,真是害死人。)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int(rnd*5-10)产生数的范围为【6,-10】,这没问题
但是int(rnd*(-7)+4)产生数的范围应该是【-3,3】,这是因为
rnd*(-7)返回的是(-7,0)之间的数,注意:返回值肯定是负值!
故rnd*(-7)+4返回值的范围(-3,4),注意没有包含4 哦!
即值范围就是 -2点多到+3点多之间
int函数是返回不大于number 的最大整数,
加上int函数后,值范围就是【-3,3】
所以答案是【-30,18】
但是int(rnd*(-7)+4)产生数的范围应该是【-3,3】,这是因为
rnd*(-7)返回的是(-7,0)之间的数,注意:返回值肯定是负值!
故rnd*(-7)+4返回值的范围(-3,4),注意没有包含4 哦!
即值范围就是 -2点多到+3点多之间
int函数是返回不大于number 的最大整数,
加上int函数后,值范围就是【-3,3】
所以答案是【-30,18】
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为 rnd*(-7)+4 的范围是 3.xxxx ~ -2.xxxx
所以 inr(rnd*(-7)+4)的范围是 3 ~ -2
因为 rnd*5-10 的范围是 -9.xxxx ~ -5.xxxx
所以 int(rnd*5-10) 的范围是 -9 ~ -5
这样就很容易得到 (3,-2)和(-9,-5)交叉相乘的最小数是 -9*3 = -27
所以 inr(rnd*(-7)+4)的范围是 3 ~ -2
因为 rnd*5-10 的范围是 -9.xxxx ~ -5.xxxx
所以 int(rnd*5-10) 的范围是 -9 ~ -5
这样就很容易得到 (3,-2)和(-9,-5)交叉相乘的最小数是 -9*3 = -27
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询