主题:[讨论]跪求一道随机函数的问题?有点难哦!
purplefly
[专家分:0] 发布于 2006-02-28 22:48:00
[em18]
抛掷一个正方体均匀木块,该木块有三面是红色、二面是蓝色、一面是绿色,仅记木块落地后向上一面的颜色,编程序模拟这个实验过程,并打印出每次的结果和经过500次实验后向上一面出现的各种颜色的次数。
谢谢哦!我编了好久都要出错!运行不出来,希望fans能帮我这个初学者哦!
回复列表 (共14个回复)
沙发
p1s [专家分:4100] 发布于 2006-03-01 09:28:00
随机数范围是0-1,然后你取随机结果0-0.5为红色(3/6=1/2),0.5-0.8333333为蓝色(2/6=1/3),0.83333333-1为绿色,用if判断大小。然后输出各种颜色即可。
这样设置的依据是等概率事件。
板凳
飞鸟12 [专家分:2830] 发布于 2006-03-01 12:27:00
讨论这个等可能事件的概率 还不如考虑一下怎么把这样的动画过程画出来
3 楼
purplefly [专家分:0] 发布于 2006-03-01 22:06:00
可以把随机数范围扩大不,可以不用概率吗?
请指教!
4 楼
p1s [专家分:4100] 发布于 2006-03-01 22:23:00
Basic的随机数范围就是0-1啊,你要扩大就是乘以一个数,但是原理还是一样的。比如乘以6。
5 楼
purplefly [专家分:0] 发布于 2006-03-01 22:41:00
我剩以六以后,就把 123定为红面,45为蓝面,6为黄面,但是结果运行不出来。
也不知道是哪里出了错!
请指教哈!
劳驾你帮我编下可以吗!
6 楼
p1s [专家分:4100] 发布于 2006-03-02 10:45:00
请把你写好的代码贴出来
7 楼
moz [专家分:37620] 发布于 2006-03-02 11:08:00
for i=1 to 500
locate 1,1
k=rnd
print k
select case k
case 0 to 0.5 : red=red+1
case 0.5 to 0.83333333 : blue=blue+1
case else : green=green+1
end select
print "红色有";red;"次"
print "蓝色有";blue;"次"
print "绿色有";green;"次"
next
8 楼
purplefly [专家分:0] 发布于 2006-03-02 22:44:00
老兄!
这个程序是不是有点问题哦!每一次的运行结果都是一样的,这样体现不出随机函数的意义呀!
我的运行结果是:
0.5081666 -02
red 266
blue 161
green 73
9 楼
moz [专家分:37620] 发布于 2006-03-03 11:21:00
当然是一样的了
要不一样的
请在程序开头加一行:
randomize timer
10 楼
purplefly [专家分:0] 发布于 2006-03-04 10:30:00
red=0
blue=0
green=0
for i=1 to 500
k=int(rnd*6)
if(k=1 or k=2 or k=3) then
red=red+1
print i;"red"
end if
if (k=4 or k=5) then
blue=blue+1
print i;"blue"
else
green=green+1
print i;"green"
end if
next
print "red have";red
print "blue have";blue
print "green have";green
end
请大家帮我弄一下!我运行的时候出了问题!
不知道是哪里的错
请多多指教哈!
我来回复