使用rand()函数的程序
program using the rand () function
我想编写一个简单的程序,其中 rand()
函数从 1,2,3 中生成一个随机数,并要求用户预测该数字。如果用户正确预测了数字,那么他就赢了,否则他就输了。
这是程序-
#include <stdio.h>
#include <stdlib.h>
int main()
{
int game;
int i;
int x;
printf("enter the expected value(0,1,2)");
scanf("%d\n",&x);
for(i=0;i<1;i++){
game=(rand()%2) + 1
if(x==game){
printf("you win!");
}
else{
printf("you loose!");
}
} return 0;
}
从您的 scanf()
中删除 \n
scanf("%d\n",&x);
至
scanf("%d",&x);
并在 game=(rand()%2) + 1;
后放置一个分号 (;)
它有效。
此处不需要您的 for 循环。
您的代码存在一些问题:
第 1 点:
scanf("%d\n",&x);
应该是
scanf("%d",&x);
第 2 点:
for(i=0;i<1;i++)
这个for循环实际上没用。它只迭代一个。要么使用更长的计数器,要么摆脱循环。
第 3 点:
最好为您的 PRNG 提供一个独特的种子。您可能希望在您的函数中使用 srand()
and time(NULL)
来提供该种子。
第 4 点:
game=(rand()%2) + 1
应该是
game = rand() % 3; // the ; maybe a typo in your case
^
|
%3 generates either of (0,1,2)
第 5 点:
当您将 %
与 rand()
一起使用时,请注意 modulo bias issue。
注:
main()
的推荐签名是int main(void)
。
- 总是初始化你的局部变量。好习惯。
你没有问任何问题,但我猜是 "Why my rand() function doesn't work?"
您需要添加这些行
#include <time.h>
以及main函数开头的随机初始化:
srand(time(NULL));
哪个应该给出:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int game;
int i;
int x;
printf("enter the expected value(0,1,2)");
scanf("%d",&x);
for(i=0;i<1;i++){
game=(rand()%2) + 1;
if(x==game){
printf("you win!");
}
else{
printf("you loose!");
}
} return 0;
}
编辑:还有 Sourav 所说的其他问题
我想编写一个简单的程序,其中 rand()
函数从 1,2,3 中生成一个随机数,并要求用户预测该数字。如果用户正确预测了数字,那么他就赢了,否则他就输了。
这是程序-
#include <stdio.h>
#include <stdlib.h>
int main()
{
int game;
int i;
int x;
printf("enter the expected value(0,1,2)");
scanf("%d\n",&x);
for(i=0;i<1;i++){
game=(rand()%2) + 1
if(x==game){
printf("you win!");
}
else{
printf("you loose!");
}
} return 0;
}
从您的 scanf()
中删除\n
scanf("%d\n",&x);
至
scanf("%d",&x);
并在 game=(rand()%2) + 1;
后放置一个分号 (;)
它有效。
此处不需要您的 for 循环。
您的代码存在一些问题:
第 1 点:
scanf("%d\n",&x);
应该是
scanf("%d",&x);
第 2 点:
for(i=0;i<1;i++)
这个for循环实际上没用。它只迭代一个。要么使用更长的计数器,要么摆脱循环。
第 3 点:
最好为您的 PRNG 提供一个独特的种子。您可能希望在您的函数中使用 srand()
and time(NULL)
来提供该种子。
第 4 点:
game=(rand()%2) + 1
应该是
game = rand() % 3; // the ; maybe a typo in your case
^
|
%3 generates either of (0,1,2)
第 5 点:
当您将 %
与 rand()
一起使用时,请注意 modulo bias issue。
注:
main()
的推荐签名是int main(void)
。- 总是初始化你的局部变量。好习惯。
你没有问任何问题,但我猜是 "Why my rand() function doesn't work?"
您需要添加这些行
#include <time.h>
以及main函数开头的随机初始化:
srand(time(NULL));
哪个应该给出:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int game;
int i;
int x;
printf("enter the expected value(0,1,2)");
scanf("%d",&x);
for(i=0;i<1;i++){
game=(rand()%2) + 1;
if(x==game){
printf("you win!");
}
else{
printf("you loose!");
}
} return 0;
}
编辑:还有 Sourav 所说的其他问题