【问题标题】:Random Number Generation using srand() defining a variable使用 srand() 定义变量的随机数生成
【发布时间】:2012-06-18 04:46:30
【问题描述】:

这是不起作用的代码:

Enemy.strength = srand((unsigned)time(NULL)) % 10;

Enemy.strength 是一个整数

我做了一些研究,发现你不能直接用 rand/srand 定义变量 如:

a = rand();

我只是想知道为什么以及是否有解决此问题的方法或您建议的替代方法

语言:C...不是 C++

【问题讨论】:

  • 您是否搜索过srand?关于如何使用它以及它与rand 有何不同,有很多关于 SO 的示例。请在此处发布之前表现出一些努力。

标签: c random numbers


【解决方案1】:

srand(seed) 返回无效。它用于播种随机数生成器。 rand() 返回一个介于 0 和 RAND_MAX 之间的伪随机整数(在 stdlib.h 中定义)。

所以要让你的敌人随机获得力量,你应该这样做:

Enemy.strength = rand() % 10; // gives a strength between 0 and 9

您可以在代码中的某处调用srand,但只需调用一次。应该在调用 rand() 之前调用它。

【讨论】:

    【解决方案2】:

    srand() 接受种子作为它的第一个参数。只需在分配 Enemy.strength 之前调用 srand() 并将 rand() 的返回值分配给它。

    示例

    srand((unsigned)time(NULL)), Enemy.strength = rand() % 10;
    

    【讨论】:

    • 带逗号操作符?干什么用的?
    • 除了写一个快速而仓促的例子来说明将 srand() 放在 rand() 之前,没有什么特别的原因,但我当然不会试图通过它赢得任何比赛。
    【解决方案3】:

    请参考以下链接进一步了解
    srand
    rand

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-09
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多