【问题标题】:using srand to insert random numbers使用 srand 插入随机数
【发布时间】:2014-09-18 22:55:04
【问题描述】:

我在调用 srand 以插入随机数以解决加法问题的语法有问题?尝试查找类似的程序以查看语法,但没有运气。

#include<stdio.h>
#include"simpleio.h"

 int main() 
{    
   //  int seed;scanf("%d",&seed);
   //  srand((unsigned)seed);

       int decision,n,o ;
     // scanf("%d", &n);
     // srand((unsigned)n);   


    do{
       printf("1.Give me an addition problem.\n"
              "2.Give me a subtraction problem.\n"
              "3.Give me a multiplication problem.\n"
              "4.Quit\n");
       scanf("%d", & decision);
      } while (decision>5 && decision<0);

    if (decision==1) 
    {
      printf("1+1= ");
    }
    else if (decision==2) 
    {
      printf("1-2\n");   
    }
    else if (decision==3) 
    {
      printf("1*2\n");
    }
    else if(decision==4) 
    { 
       printf("\n");
    } 

return 0;
}

【问题讨论】:

  • decision&gt;5 &amp;&amp; decision&lt;0 总是假的。改为decision&gt;4 || decision&lt;1
  • 您还没有告诉我们您遇到了什么问题。您的 srand 电话已被注释掉。您的代码在有或没有它们的情况下都可以编译(一旦我删除了未使用的#include"simpleio.h")。在拨打rand() 之前,您应该只拨打一次srand()。如果你正在从用户那里读取种子,你不妨将种子声明为unsigned,这样你就不必转换它了。你到底在问什么?
  • 我不知道如何使用 srand 在加法问题 keith 中插入两个随机整数。我的问题是设置 srand 调用,我以前从未使用过这个调用。请不要笑,是的,我对编程还很陌生,我想了解一些有关如何使用和设置 srand 来执行放置两个随机操作的信息要添加的整数。你能帮我设置一下并简要解释一下基思吗?
  • srand() 只播种随机数生成器。您调用rand() 从中检索随机数。但请注意,如果您要超越简单的算术问题生成,就会有很多陷阱。由srand()rand() 实现的生成器 适合必须严肃地使用随机数。在任何情况下,rand() 都适合此用例,只要您每次执行程序时只调用 srand() 一次
  • @wallyk 我刚刚摆脱了标准的新用户错误,即每次调用srand 一次以“确保已播种”。知道第二次使用种子来获得相同序列的用户不会问 this 问题....(正确)多次调用它的示例将在关卡生成器中迷宫游戏。您可以在每个级别播种一次,以便可以在该级别重新启动游戏,并将基本迷宫的状态存储减少到基本上单个种子值。但是对于 OP 的闪存卡模拟,每次运行一次并从 time() 播种是好的。

标签: c srand


【解决方案1】:

在类似的任务中,最好使用switch case

#include <stdio.h>
#include <string.h>

main()
{
    int decision;

    do{
       printf("1.Give me an addition problem.\n"
              "2.Give me a subtraction problem.\n"
              "3.Give me a multiplication problem.\n"
              "4.Give me a division problem.\n"
              "5.Quit\n");
       scanf("%d", & decision);
      } while (decision >5 || decision <= 0); // correct your condition

    // generate two random numbers for the operation
    srand(time(NULL));
    int a = rand()%20 + 1; // random between 1 and 20
    int b = rand()%20 + 1; // random between 1 and 20

    switch(decision)
    {
        case 1: //addition
        printf("%d + %d = %d\n", a, b, a+b);
        break;

        case 2: //subtraction
        printf("%d - %d = %d\n", a, b, a-b);
        break;

        case 3: //multiplication
        printf("%d * %d = %d\n", a, b, a*b);
        break;

        case 4: //division
        printf("%d / %d = %d, and remainder = %d\n", a, b, a/b, a%b);


        default :
        break;
    }

    return;
}

我将除法作为奖励加入

【讨论】:

  • @cyerocks,很高兴它有帮助,我只是不介意获得 UpVote/Accept ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多