C语言如何生成一个超长尾词的随机数?

2026-04-12 02:281阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计741个文字,预计阅读时间需要3分钟。

C语言如何生成一个超长尾词的随机数?

(C语言生成随机数问题 + rand() 函数 + C++ Reference (cplusplus.com) + rand() 函数是专门用来生成随机数的,rand() 返回的是0到RAND_MAX(32767)之间的随机数 + rand() 函数在头文件stdlib.h中,使用前需要导入)

(C语言生成随机数问题)

C语言如何生成一个超长尾词的随机数?

rand函数

rand - C++ Reference (cplusplus.com)

  • rand()函数是专门用来生成随机数的
  • rand()返回的是0~RAND_MAX(32767)之间的随机数
  • rand()函数在头文件stdlib.h中,使用前要导入这个头文件
  • 因为rand默认生成随机数范围是0~32767,这是一段很大的范围,所以我们需要限制随机数范围:rand()%100+1 范围:1~ 100 因为任何一个数字,模100,得到结果的范围是0~99,在加1,范围就是1 ~ 100

int num = rand()%100+1; printf("%d", num);

  • 此时rand的确生成了随机数,但是每次生成的随机数都是固定值,所以我们要在rand()前使用一个srand函数,来设置随机数生成器

srand函数

srand - C++ Reference (cplusplus.com)

  • srand函数的定义(官方):

void srand (unsigned int seed);

  • srand函数也在头文件stdlib.h
  • srand的使用

srand(1); int num = rand(); printf("%d", num);

  • 在srand中传不同的值,rand会生成不同的值

  • 所以我们为了得到不同的随机值,我们要给srand()传一个时刻变化的值——时间


时间戳和time()函数

  • 定义:时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
  • 在C语言中,time()会返回时间戳 time - C++ Reference (cplusplus.com)
  • time()的定义(官方):

time_t time (time_t* timer);

  • time()函数在time.h的头文件里,使用前要导入这个头文件
  • time()函数的使用:

srand(time(NULL)); int num = rand(); printf("%d", num); //这时,每次都会生成不同的随机数

  • 但是这里会发现,每次生成的随机数都很相近,所以如果有循环生成随机数的要求,srand在程序中只需调用一次即可,不用重复调用,即把srand语句放到主函数里,生成随机数部分放到函数中

最终代码:

#include <stdio.h> #include <stdlib.h> #include <time.h> void test() { int num = rand()%100+1; printf("%d\n", num); } int main() { int n = 0; srand(time(NULL)); printf("输入要生成随机数的个数:"); scanf("%d", &n); for (int i = 0; i < n; i++) { test(); } }

结果:

本文共计741个文字,预计阅读时间需要3分钟。

C语言如何生成一个超长尾词的随机数?

(C语言生成随机数问题 + rand() 函数 + C++ Reference (cplusplus.com) + rand() 函数是专门用来生成随机数的,rand() 返回的是0到RAND_MAX(32767)之间的随机数 + rand() 函数在头文件stdlib.h中,使用前需要导入)

(C语言生成随机数问题)

C语言如何生成一个超长尾词的随机数?

rand函数

rand - C++ Reference (cplusplus.com)

  • rand()函数是专门用来生成随机数的
  • rand()返回的是0~RAND_MAX(32767)之间的随机数
  • rand()函数在头文件stdlib.h中,使用前要导入这个头文件
  • 因为rand默认生成随机数范围是0~32767,这是一段很大的范围,所以我们需要限制随机数范围:rand()%100+1 范围:1~ 100 因为任何一个数字,模100,得到结果的范围是0~99,在加1,范围就是1 ~ 100

int num = rand()%100+1; printf("%d", num);

  • 此时rand的确生成了随机数,但是每次生成的随机数都是固定值,所以我们要在rand()前使用一个srand函数,来设置随机数生成器

srand函数

srand - C++ Reference (cplusplus.com)

  • srand函数的定义(官方):

void srand (unsigned int seed);

  • srand函数也在头文件stdlib.h
  • srand的使用

srand(1); int num = rand(); printf("%d", num);

  • 在srand中传不同的值,rand会生成不同的值

  • 所以我们为了得到不同的随机值,我们要给srand()传一个时刻变化的值——时间


时间戳和time()函数

  • 定义:时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
  • 在C语言中,time()会返回时间戳 time - C++ Reference (cplusplus.com)
  • time()的定义(官方):

time_t time (time_t* timer);

  • time()函数在time.h的头文件里,使用前要导入这个头文件
  • time()函数的使用:

srand(time(NULL)); int num = rand(); printf("%d", num); //这时,每次都会生成不同的随机数

  • 但是这里会发现,每次生成的随机数都很相近,所以如果有循环生成随机数的要求,srand在程序中只需调用一次即可,不用重复调用,即把srand语句放到主函数里,生成随机数部分放到函数中

最终代码:

#include <stdio.h> #include <stdlib.h> #include <time.h> void test() { int num = rand()%100+1; printf("%d\n", num); } int main() { int n = 0; srand(time(NULL)); printf("输入要生成随机数的个数:"); scanf("%d", &n); for (int i = 0; i < n; i++) { test(); } }

结果: