简单的模具滚动游戏打印错误

时间:2018-07-04 07:09:28

标签: visual-c++ random

所以我是C ++的新手,我是几天前开始的。我花了很多时间来学习它,也许比几天之内应该得到的更多。无论如何,我采用了一些将两次掷骰子并给出结果的代码。我决定对其进行一些更改,以便如果结果是质数,则您会“赢”,如果结果不是质数,则可能会输掉,这将使您回到程序中,直到您获得质数为止。

我决定使用从中学到的知识来尝试制作一个简单的骰子滚动程序,该程序将简单地要求用户按Enter键来运行脚本,然后在他们按Enter键时为他们掷骰子。我这样做了,因此它经过了while循环,因此它将保持运行,因此可以用于多个压模辊。

我在打印时没有得到实际的错误,除了我注意到它将打印结果外,其他所有操作都正常,然后当我再次运行它时,它将打印相同的结果,所以如果我按回车一次并获得3,第二次我获得3,但是如果我第三次获得任何东西。我想知道是否有人会看一下我的代码,也许可以帮助我解决问题?

screenshot

值得一提的是,它似乎只给我两次相同的数字,就像是75%的时间一样,但似乎仍然经常是巧合。另外,这是我第一次使用stackoverflow,我不知道如何正确使用代码输入,因此我只添加了一个图像。

感谢您获得的任何帮助,如果需要,我可以添加其他信息。我有一个变化,就是我不需要一些“ #include”功能,我不确定。任何提示和建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

请勿循环调用srand

srand()初始化随机数生成器。使用time(NULL)作为参数时,只要当前秒不变,它将使用相同的值初始化生成器。因此,random()的所有调用均在同一秒内完成,返回的结果相同。

当时钟滴答作响时,发生器将以相同的编号从头到尾重新启动,代表一个新的时钟状态,并且得到一系列相等的新结果。

在您的srand()的开头只需调用一次main()

编辑
参见srand() — why call it only once?