C语言生成随机数的功能,如何实现其长尾词的生成机制?

2026-04-12 01:292阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

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

C语言生成随机数的功能,如何实现其长尾词的生成机制?

c#include

int main() { int a=rand(); int b=rand(); printf(%d %d\n, a, b); return 0;}

1.rand函数

需要引用头文件<stdlib.h>

(1)用法:

int main() { int a = rand(); int b = rand(); printf("%d\n%d", a,b); return 0; }

(2)缺点:随机数执行一次后不再改变(上述代码再执行一次结果仍然为41和18467

(3)原理:通过rand产生的随机数为伪随机数,此随机数是根据某个数值按照一个正态分布的公式推得。

其中x轴代表某个数值,我们称之为“种子”;y轴代表随机数。

种子在每次启动计算机时是随机的,但计算机启动后不再发生变化,所以我们再次运行上述代码,随机数不会改变。这时我们要用到srand函数来改变种子,以达到改变随机数的目的。

2.srand函数

用法:srand需要一个大于等于0的整数作为参数即srand(unsigned int)

int main() { srand(2); int a = rand(); int b = rand(); printf("%d\n%d", a,b); return 0; }

int main() { srand(3); int a = rand(); int b = rand(); printf("%d\n%d", a,b); return 0; }


可见改变srand的参数即可改变随机数。我们可以用time函数来改变srand的参数。

3.time函数

需要引用头文件<time.h>

用法:time(0)或time(NULL)将返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。

把三个函数结合,得到最终生成随机数函数。

int main() { srand((unsigned)time(NULL)); int a = rand(); int b = rand(); printf("%d\n%d", a,b); return 0; }

4.实例

请生成[13,65]之间的随机数

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { srand((unsigned)time(0)); int a = rand()%53+13; //模53代表生成[0,52]之间的随机数,+13代表生成[13,65]之间的随机数。 printf("%d", a); return 0; }

5.注意事项

如果要用循环语句大量生成随机数,srand一定要放在循环语句之外,rand放在循环语句之内!

C语言生成随机数的功能,如何实现其长尾词的生成机制?

原因:假如我们需要循环5次,生成五个随机数,电脑执行这5次的速度非常快,通常以毫秒来计,而time(NULL)函数以秒来计,过1秒加1。所以在这短暂的五次循环过程中,我们可以把srand((unsigned)time(NULL))这个函数看作srand(3)

<1>如果把srand(3)写在循环外

int main() { srand(3); for (int i = 0;i < 5;i++) { int k = rand(); printf("%d\n", k); } return 0; }

可生成5个随机数

<2>如果把srand(3)写在循环内

int main() { for (int i = 0;i < 5;i++) { srand(3); int k = rand(); printf("%d\n", k); } return 0; }

生成的全是<1>中的第一个数,即srand每次被重设为一次3,都会从第一个随机数开始读取,所以不能把srand放循环内。

从以上探究可以发现一个种子可对应多个随机数,但种子一旦定了,这些随机数的值和读取顺序也定了。

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

C语言生成随机数的功能,如何实现其长尾词的生成机制?

c#include

int main() { int a=rand(); int b=rand(); printf(%d %d\n, a, b); return 0;}

1.rand函数

需要引用头文件<stdlib.h>

(1)用法:

int main() { int a = rand(); int b = rand(); printf("%d\n%d", a,b); return 0; }

(2)缺点:随机数执行一次后不再改变(上述代码再执行一次结果仍然为41和18467

(3)原理:通过rand产生的随机数为伪随机数,此随机数是根据某个数值按照一个正态分布的公式推得。

其中x轴代表某个数值,我们称之为“种子”;y轴代表随机数。

种子在每次启动计算机时是随机的,但计算机启动后不再发生变化,所以我们再次运行上述代码,随机数不会改变。这时我们要用到srand函数来改变种子,以达到改变随机数的目的。

2.srand函数

用法:srand需要一个大于等于0的整数作为参数即srand(unsigned int)

int main() { srand(2); int a = rand(); int b = rand(); printf("%d\n%d", a,b); return 0; }

int main() { srand(3); int a = rand(); int b = rand(); printf("%d\n%d", a,b); return 0; }


可见改变srand的参数即可改变随机数。我们可以用time函数来改变srand的参数。

3.time函数

需要引用头文件<time.h>

用法:time(0)或time(NULL)将返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。

把三个函数结合,得到最终生成随机数函数。

int main() { srand((unsigned)time(NULL)); int a = rand(); int b = rand(); printf("%d\n%d", a,b); return 0; }

4.实例

请生成[13,65]之间的随机数

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { srand((unsigned)time(0)); int a = rand()%53+13; //模53代表生成[0,52]之间的随机数,+13代表生成[13,65]之间的随机数。 printf("%d", a); return 0; }

5.注意事项

如果要用循环语句大量生成随机数,srand一定要放在循环语句之外,rand放在循环语句之内!

C语言生成随机数的功能,如何实现其长尾词的生成机制?

原因:假如我们需要循环5次,生成五个随机数,电脑执行这5次的速度非常快,通常以毫秒来计,而time(NULL)函数以秒来计,过1秒加1。所以在这短暂的五次循环过程中,我们可以把srand((unsigned)time(NULL))这个函数看作srand(3)

<1>如果把srand(3)写在循环外

int main() { srand(3); for (int i = 0;i < 5;i++) { int k = rand(); printf("%d\n", k); } return 0; }

可生成5个随机数

<2>如果把srand(3)写在循环内

int main() { for (int i = 0;i < 5;i++) { srand(3); int k = rand(); printf("%d\n", k); } return 0; }

生成的全是<1>中的第一个数,即srand每次被重设为一次3,都会从第一个随机数开始读取,所以不能把srand放循环内。

从以上探究可以发现一个种子可对应多个随机数,但种子一旦定了,这些随机数的值和读取顺序也定了。