回 帖 发 新 帖 刷新版面

主题:[讨论]跪求一道随机函数的问题?有点难哦!

[em18]
   抛掷一个正方体均匀木块,该木块有三面是红色、二面是蓝色、一面是绿色,仅记木块落地后向上一面的颜色,编程序模拟这个实验过程,并打印出每次的结果和经过500次实验后向上一面出现的各种颜色的次数。
   谢谢哦!我编了好久都要出错!运行不出来,希望fans能帮我这个初学者哦!

回复列表 (共14个回复)

沙发

随机数范围是0-1,然后你取随机结果0-0.5为红色(3/6=1/2),0.5-0.8333333为蓝色(2/6=1/3),0.83333333-1为绿色,用if判断大小。然后输出各种颜色即可。
这样设置的依据是等概率事件。

板凳

讨论这个等可能事件的概率 还不如考虑一下怎么把这样的动画过程画出来

3 楼

可以把随机数范围扩大不,可以不用概率吗?
请指教!

4 楼

Basic的随机数范围就是0-1啊,你要扩大就是乘以一个数,但是原理还是一样的。比如乘以6。

5 楼

我剩以六以后,就把 123定为红面,45为蓝面,6为黄面,但是结果运行不出来。
也不知道是哪里出了错!
请指教哈!
劳驾你帮我编下可以吗!

6 楼

请把你写好的代码贴出来

7 楼

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 楼

老兄!
  这个程序是不是有点问题哦!每一次的运行结果都是一样的,这样体现不出随机函数的意义呀!
  我的运行结果是:
    0.5081666  -02
      red    266
        blue   161
        green  73

9 楼

当然是一样的了
要不一样的
请在程序开头加一行:
randomize timer

10 楼

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


请大家帮我弄一下!我运行的时候出了问题!
不知道是哪里的错
请多多指教哈!

我来回复

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