基本上我必须编写一个程序来生成随机数来模拟一对骰子的滚动。该程序应该在多个文件中构建。主函数应该在一个文件中,其他函数应该在第二个源文件中,并且它们的原型应该在头文件中。首先,我编写一个短函数,返回1到6之间的随机值,以模拟单个6面骰子的滚动。其次,我编写了一个假装通过调用此函数两次掷骰子的函数。 我的程序首先询问用户应该制作多少卷。然后我写了一个函数来模拟掷骰子这么多次,保持计数2,3,4,5,6,7,8,9,10,11,12(每个数字是一对骰子的总和)出现在一个数组中。后来我编写了一个函数来显示一个使用这些计数的小条形图,对于144个卷的样本,理想情况下看起来如下所示,其中打印的星号数对应于计数:
2 3 4 5 6 7 8 9 10 11 12
* * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
接下来,为了了解随机数生成器的运行情况,我编写了一个函数来计算滚动的平均值。将其与7的理想平均值进行比较。另外,打印出一个小表格,显示程序对每个卷筒的计数,基于给定卷筒总数的上述频率的理想计数,以及这些值之间的差异。列。到目前为止,这是我不完整的代码: " Compiler visual studio 2010"
int rolling(){ //Function that returns a random value between 1 and 6
rand(unsigned(time(NULL)));
int dice = 1 + (rand() %6);
return dice;
}
int roll_dice(int num1,int num2){ //it calls 'rolling function' twice
int result1,result2;
num1 = rolling();
num2 = rolling();
result1 = num1;
result2 = num2;
return result1,result2;
}
int main(void){
int times,i,sum,n1,n2;
int c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11;//counters for each sum
printf("Please enter how many times you want to roll the dice.\n")
scanf_s("%i",×);
我假装使用计数器来计算每个总和并将数字(计数)存储在数组中。我知道我需要一个循环(for)和一些条件语句(如果)但主要的问题是从roll_dice获取值并将它们存储在n1和n2中,这样我就可以将它们相加并将总和存储在'总和'
答案 0 :(得分:5)
从页面:
uniform_int_distribution<int> one_to_six {1,6}; // distribution that maps to the ints 1..6
default_random_engine re {}; // the default engine
int x = one_to_six(re); // x becomes a value in [1:6]
你快速移动时间值的冷种子。
std::chrono::time_point<std::chrono::system_clock>
now {std::chrono::system_clock::now()};
std::chrono::system_clock::duration
epoch {now.time_since_epoch()};
typedef std::chrono::duration<unsigned long long int, std::milli> ms;
std::default_random_engine re {std::chrono::duration_cast<ms>(epoch).count()};
答案 1 :(得分:0)
制作滚动骰子的功能并返回总和。
int Roll(int numberOfTimes)
{
int temp = numberOfTimes;
int sum = 0;
int dice1 = 0;
int dice2 = 0;
for (int i = 0; < temp; i++)
{
dice1 = 1 + (rand() % 6);
dice2 = 1 + (rand() % 6);
sum = dice1 + dice2;
}
return sum;
}
我没有测试过这个,但它可能有所帮助。
答案 2 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int RollDice()
{
return rand() % 6 + 1;
}
int main()
{
int times, i, cont;
int count[11];
srand(time(NULL));
printf("Please enter how many times you want to roll the dice: ");
scanf("%i", ×);
if (times <= 0)
{
fprintf(stderr, "Invalid value.\n");
return -1;
}
for (i = 0; i < 11; i++)
{
count[i] = 0;
}
for (i = 0; i < times; i++)
{
int result = RollDice() + RollDice();
if (result < 2 || result > 12)
{
fprintf(stderr, "something goes wrong\n");
return -1;
}
++count[result - 2];
}
for (i = 2; i <= 12; i++)
{
printf("%3d", i);
}
printf("\n");
while (1)
{
cont = 0;
for (i = 0; i < 11; i++)
{
printf(" %c", (count[i] > 0) ? '*' : ' ');
if (count[i] > 0)
{
if (--count[i] > 0)
{
cont = 1;
}
}
}
printf("\n");
if (!cont)
{
break;
}
}
return 0;
}