當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。