黑马程序员技术交流社区

标题: 掷骰子问题 [打印本页]

作者: 盘晟    时间: 2013-6-8 15:35
标题: 掷骰子问题
本帖最后由 盘晟 于 2013-6-18 21:35 编辑

第一种代码:
            int[] values = { 0, 0, 0, 0, 0, 0 };
            Random r = new Random();
            int number = r.Next(1,7);
            for (int i = 0; i < 100; i++)
            {
                if (number == 1)
                    values[0]++;
                if (number == 2)
                    values[1]++;
                if (number == 3)
                    values[2]++;
                if (number == 4)
                    values[3]++;
                if (number == 5)
                    values[4]++;
                if (number == 6)
                    values[5]++;
            }
            Console.WriteLine("1点出现的次数为{0}",values[0]);
            Console.WriteLine("2点出现的次数为{0}", values[1]);
            Console.WriteLine("3点出现的次数为{0}", values[2]);
            Console.WriteLine("4点出现的次数为{0}", values[3]);
            Console.WriteLine("5点出现的次数为{0}", values[4]);
            Console.WriteLine("6点出现的次数为{0}", values[5]);
输出结果:


第二种代码:
  int[] values = { 0, 0, 0, 0, 0, 0 };
            Random r = new Random();
            
            for (int i = 0; i < 100; i++)
            {
                if (r.Next(1,7) == 1)
                    values[0]++;
                if (r.Next(1,7) == 2)
                    values[1]++;
                if (r.Next(1, 7) == 3)
                    values[2]++;
                if (r.Next(1, 7) == 4)
                    values[3]++;
                if (r.Next(1, 7) == 5)
                    values[4]++;
                if (r.Next(1, 7) == 6)
                    values[5]++;
            }
            Console.WriteLine("1点出现的次数为{0}",values[0]);
            Console.WriteLine("2点出现的次数为{0}", values[1]);
            Console.WriteLine("3点出现的次数为{0}", values[2]);
            Console.WriteLine("4点出现的次数为{0}", values[3]);
            Console.WriteLine("5点出现的次数为{0}", values[4]);
            Console.WriteLine("6点出现的次数为{0}", values[5]);
            Console.ReadKey();
输出结果:

如果定义int number=r.next(1,7);结果不对,直接在循环里r.next(1,7)结果则是对的?

作者: 无__畏    时间: 2013-6-8 16:10
random在循环外面,它只执行了一次。  也就是只扔了一次塞子
作者: 无__畏    时间: 2013-6-8 16:13
            for (int i = 0; i < 100; i++)
            {                int number = r.Next(1,7);
                swich(number)
                {
                   case 1:
                               values[0]++;
                                break;
                    ......
                }
            }

作者: 张成智    时间: 2013-6-8 16:41
楼上正解,应把生成随机数的那一句写入循环中。。。
作者: 盘晟    时间: 2013-6-10 21:07
c15881291595 发表于 2013-6-8 17:03
肯定要写在循环体里啊  int number=r.next(1,7);是返回大于等于1且小于7的正整数,只返回一次的嘛。。 ...

OK,懂了,大意了~!
作者: ljh4282158    时间: 2013-6-10 21:15
  好吧、想要回答,但是楼上已经给出了答案
作者: a724228803    时间: 2013-6-11 07:26
是的, 因为第一掷出 3 ,后面 循环了100次  把3 那个数字自己了100!!!!!!!!
所以出现这样的结果,
作者: haxyek    时间: 2013-6-11 09:48
仔细,仔细,在仔细,实在不行就设置断点,一步一步检查。。应该不会出什么大问题的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2