当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 rand用法及代码示例


C语言stdlib头文件(stdlib.h)中rand函数的用法及代码示例。

用法:

int rand (void);
产生随机数
返回介于之间的伪随机整数0RAND_MAX

该数字是由一种算法生成的,该算法每次调用时都会返回一个看起来不相关的数字序列。该算法使用种子来生成序列,应使用函数将其初始化为一些与众不同的值srand

RAND_MAX是在中定义的常量<cstdlib>

使用以下方法在确定的范围内生成平凡的伪随机数的典型方法rand是使用范围跨度使用返回值的模并添加范围的初始值:

/* rand example: guess the number */
#include <stdio.h>      /* printf, scanf, puts, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */

int main ()
{
  int iSecret, iGuess;

  /* initialize random seed: */
  srand (time(NULL));

  /* generate secret number between 1 and 10: */
  iSecret = rand() % 10 + 1;

  do {
    printf ("Guess the number (1 to 10): ");
    scanf ("%d",&iGuess);
    if (iSecret<iGuess) puts ("The secret number is lower");
    else if (iSecret>iGuess) puts ("The secret number is higher");
  } while (iSecret!=iGuess);

  puts ("Congratulations!");
  return 0;
}


请注意,尽管此模运算不会在跨度中生成均匀分布的随机数(因为在大多数情况下,此运算使较低的数字更有可能出现)。

C++支持各种强大的工具来生成随机数和伪随机数(请参阅<random>有关更多信息)。

参数

(没有)

返回值

介于0和之间的整数值RAND_MAX

示例

/* rand example: guess the number */
#include <stdio.h>      /* printf, scanf, puts, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */

int main ()
{
  int iSecret, iGuess;

  /* initialize random seed: */
  srand (time(NULL));

  /* generate secret number between 1 and 10: */
  iSecret = rand() % 10 + 1;

  do {
    printf ("Guess the number (1 to 10): ");
    scanf ("%d",&iGuess);
    if (iSecret<iGuess) puts ("The secret number is lower");
    else if (iSecret>iGuess) puts ("The secret number is higher");
  } while (iSecret!=iGuess);

  puts ("Congratulations!");
  return 0;
}


在此示例中,随机种子被初始化为代表当前时间的值(调用time),以便在每次运行程序时生成不同的值。

可能的输出:

Guess the number (1 to 10): 5
The secret number is higher
Guess the number (1 to 10): 8
The secret number is lower
Guess the number (1 to 10): 7
Congratulations!




相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C rand function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。