在 C 中添加由随机数生成器生成的数字
Adding Numbers Generated By Random Number Generator in C
在我提出问题之前,我想指出我确实已经在寻找答案,但我没有找到我要找的东西。
请记住,我是编程方面的初学者,所以请不要以为我什么都知道。
对了,正题。
我的问题是:如何将 运行dom 数字生成器创建的数字加在一起?我遇到的困难是每次程序 运行 时 运行domly 生成的数字的数量可能不同。为了更清楚地说明,运行domly 生成的数字的数量取决于用户的输入,例如,如果输入是 9,程序将生成 9 个 运行dom 数字。这让我很难想出如何将 运行dom 数字加在一起并显示它们的想法。
这是我程序的源代码。我认为重要的是要提到每次我 运行 程序时 运行dom 数字都会改变,这就是我希望它们成为的样子(我随时间使用了 s运行d() , 和 运行d() )。此外,我目前遇到的问题是程序将最后一个 运行domly 生成的数字加倍,而不是将它们全部加在一起。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int input;
scanf("%d", &input);
int i;
int roll;
int turn_total;
time_t t;
int sum;
srand((unsigned) time(&t)); // the seed for the random number generator based on the current time
for( i = 0; i < input; i++)
{
roll = (rand() % 6 + 1); // random number generator
sum = roll+roll; // only dubbling the last roll for some reason = /
printf("You Rolled : %d\n", roll);
}
printf("The Total Turn Score is : %d", sum);
}
如有任何帮助、想法或线索,我们将不胜感激。
你需要先初始化总和,而且你没有正确添加。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int input;
scanf("%d", &input);
int i;
int roll;
time_t t;
int sum = 0;
srand((unsigned) time(&t)); // the seed for the random number generator based on the current time
for( i = 0; i < input; i++)
{
roll = (rand() % 6 + 1); // random number generator
sum += roll; // only dubbling the last roll for some reason = /
printf("You Rolled : %d\n", roll);
}
printf("The Total Turn Score is : %d", sum);
}
使用
srand( ( unsigned int )time( NULL ) );
并初始化变量sum
。例如
long long int sum = 0;
//...
sum += roll;
//...
printf( "The Total Turn Score is : %lld", sum );
您的程序将生成的数字加倍,因为这是您在这一行中告诉它要做的:
sum = roll+roll;
相反,您需要将当前 roll
添加到 sum
的当前值:
sum = sum + roll;
并且您需要将 sum
初始化为 0,这样您就可以只添加第一个卷。
把它想象成多次掷骰子并写下每次的结果。你掷一次,得到 3,所以你记下 3。你再掷一次,得到 6,所以你将 6 添加到上一次掷中得到 9。你再次掷骰得到 2,所以你将 2 加到 9,然后得到11,依此类推。变量 sum
是您在每次滚动后记下新数字的地方,但您是在添加之前记下的数字。
你以前的方式,完全无视以前的卷。循环中的 rolls
仅指您执行的最新掷骰,并且由于循环在某个时刻结束,因此 sum
将保留为 roll
的最后一个值的总和。这就是为什么你得到最后一个数字的两倍。
替换
sum = roll+roll
和
sum = roll+sum;
在我提出问题之前,我想指出我确实已经在寻找答案,但我没有找到我要找的东西。 请记住,我是编程方面的初学者,所以请不要以为我什么都知道。 对了,正题。 我的问题是:如何将 运行dom 数字生成器创建的数字加在一起?我遇到的困难是每次程序 运行 时 运行domly 生成的数字的数量可能不同。为了更清楚地说明,运行domly 生成的数字的数量取决于用户的输入,例如,如果输入是 9,程序将生成 9 个 运行dom 数字。这让我很难想出如何将 运行dom 数字加在一起并显示它们的想法。 这是我程序的源代码。我认为重要的是要提到每次我 运行 程序时 运行dom 数字都会改变,这就是我希望它们成为的样子(我随时间使用了 s运行d() , 和 运行d() )。此外,我目前遇到的问题是程序将最后一个 运行domly 生成的数字加倍,而不是将它们全部加在一起。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int input;
scanf("%d", &input);
int i;
int roll;
int turn_total;
time_t t;
int sum;
srand((unsigned) time(&t)); // the seed for the random number generator based on the current time
for( i = 0; i < input; i++)
{
roll = (rand() % 6 + 1); // random number generator
sum = roll+roll; // only dubbling the last roll for some reason = /
printf("You Rolled : %d\n", roll);
}
printf("The Total Turn Score is : %d", sum);
}
如有任何帮助、想法或线索,我们将不胜感激。
你需要先初始化总和,而且你没有正确添加。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int input;
scanf("%d", &input);
int i;
int roll;
time_t t;
int sum = 0;
srand((unsigned) time(&t)); // the seed for the random number generator based on the current time
for( i = 0; i < input; i++)
{
roll = (rand() % 6 + 1); // random number generator
sum += roll; // only dubbling the last roll for some reason = /
printf("You Rolled : %d\n", roll);
}
printf("The Total Turn Score is : %d", sum);
}
使用
srand( ( unsigned int )time( NULL ) );
并初始化变量sum
。例如
long long int sum = 0;
//...
sum += roll;
//...
printf( "The Total Turn Score is : %lld", sum );
您的程序将生成的数字加倍,因为这是您在这一行中告诉它要做的:
sum = roll+roll;
相反,您需要将当前 roll
添加到 sum
的当前值:
sum = sum + roll;
并且您需要将 sum
初始化为 0,这样您就可以只添加第一个卷。
把它想象成多次掷骰子并写下每次的结果。你掷一次,得到 3,所以你记下 3。你再掷一次,得到 6,所以你将 6 添加到上一次掷中得到 9。你再次掷骰得到 2,所以你将 2 加到 9,然后得到11,依此类推。变量 sum
是您在每次滚动后记下新数字的地方,但您是在添加之前记下的数字。
你以前的方式,完全无视以前的卷。循环中的 rolls
仅指您执行的最新掷骰,并且由于循环在某个时刻结束,因此 sum
将保留为 roll
的最后一个值的总和。这就是为什么你得到最后一个数字的两倍。
替换
sum = roll+roll
和
sum = roll+sum;